刚开始显示全部的列信息,可通过选择字段来选择要显示哪些列,剩下的隐藏!
请问asp.net如何实现??
上面字段是CheckBoxList
下面是我的一些代码:
<asp:CheckBoxList ID="CheckBoxList1" runat="server" RepeatDirection="Horizontal">
<asp:ListItem Value="zc_name">设备名称</asp:ListItem>
<asp:ListItem Value="pp">设备品牌</asp:ListItem>
<asp:ListItem Value="lx">设备类型</asp:ListItem>
<asp:ListItem Value="cpbm1">产品编号1</asp:ListItem>
<asp:ListItem Value="cgdw">从购单位</asp:ListItem>
<asp:ListItem Value="xhgg">型号规格</asp:ListItem>
<asp:ListItem Value="zcbh">固定资产编号</asp:ListItem>
<asp:ListItem Value="gmsj">购买时间</asp:ListItem>
<asp:ListItem Value="dw">使用单位</asp:ListItem>
<asp:ListItem Value="bm">使用部门</asp:ListItem>
<asp:ListItem Value="zrr">责任人</asp:ListItem>
</asp:CheckBoxList>
<asp:GridView ID="GridView1" runat="server" AllowPaging="True" CellPadding="4" ForeColor="#333333" GridLines="None" Width="1000px" AutoGenerateColumns="False" EmptyDataText="无记录" CaptionAlign="Left" CssClass="gridview" OnPageIndexChanging="GridView1_PageIndexChanging">
<FooterStyle BackColor="#5D7B9D" CssClass="trbottom" Font-Bold="True" ForeColor="White" />
<RowStyle BackColor="#F7F6F3" ForeColor="#333333" />
<EmptyDataRowStyle ForeColor="Red" />
<PagerStyle BackColor="#284775" ForeColor="White" HorizontalAlign="Center" />
<SelectedRowStyle BackColor="#E2DED6" Font-Bold="True" ForeColor="#333333" />
<HeaderStyle BackColor="#5D7B9D" CssClass="trtop" Font-Bold="True" ForeColor="White" />
<EditRowStyle BackColor="#999999" />
<AlternatingRowStyle BackColor="White" ForeColor="#284775" />
<Columns>
<asp:BoundField DataField="zc_name" HeaderText="设备名称" HtmlEncode="False" SortExpression="zc_name" />
<asp:BoundField DataField="pp" HeaderText="品牌" HtmlEncode="False" SortExpression="pp" />
<asp:BoundField DataField="lx" HeaderText="类型" HtmlEncode="False" SortExpression="lx" />
<asp:BoundField DataField="cpbm1" HeaderText="产品编码1" HtmlEncode="False" SortExpression="cpbm1" />
<asp:BoundField DataField="cgdw" HeaderText="从购单位" HtmlEncode="False" SortExpression="cgdw" />
<asp:BoundField DataField="xhgg" HeaderText="型号规格" HtmlEncode="False" SortExpression="xhgg" />
<asp:BoundField DataField="zcbh" HeaderText="固资编号" HtmlEncode="False" SortExpression="zcbh" />
<asp:BoundField DataField="gmsj" HeaderText="购买时间" HtmlEncode="False" SortExpression="gmsj" DataFormatString="{0:yyyy-MM-dd}" />
<asp:BoundField DataField="dw" HeaderText="使用单位" HtmlEncode="False" SortExpression="dw" />
<asp:BoundField DataField="bm" HeaderText="使用部门" HtmlEncode="False" SortExpression="bm" />
<asp:BoundField DataField="zrr" HeaderText="责任人" HtmlEncode="False" SortExpression="zrr" />
<asp:BoundField DataField="yxzt" HeaderText="状态" HtmlEncode="False" SortExpression="yxzt" />
<asp:TemplateField>
<ItemTemplate>
<asp:HyperLink ID="detail" runat="server" NavigateUrl=<%# "~/Basicmodules/xx_update.aspx?id="+Eval("id")%> Text='详细信息'></asp:HyperLink>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField>
<ItemTemplate>
<asp:HyperLink ID="update" runat="server" NavigateUrl=<%# "~/Basicmodules/zc_update.aspx?id="+Eval("id")%> Text='基本信息'></asp:HyperLink>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField>
<ItemTemplate>
<asp:HyperLink ID="wx" runat="server" NavigateUrl=<%# "~/Basicmodules/wx_show.aspx?id="+Eval("id")%> Text='维修信息'></asp:HyperLink>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField>
<ItemTemplate>
<asp:HyperLink ID="dp" runat="server" NavigateUrl=<%# "~/Basicmodules/dp_info.aspx?id="+Eval("id")%> Text='调配信息'></asp:HyperLink>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
底下这段是查看选择了哪些字段
string sql = "";
int count;
count = 0;
for (int i = 0; i < CheckBoxList1.Items.Count; i++)
{
if (CheckBoxList1.Items[i].Selected == true)
{
count++;
if (count >= 1)
{
sql = sql + CheckBoxList1.Items[i].Value+",";
}
}
}
if (sql.Length > 2)
{
sql = sql.Substring(0, sql.Length - 1);
sArray = sql.Split(',');
}
CheckBoxList的value值是gridview绑定的字段名称。。。
请问该如何动态实现gridview的列的显示。。。
分析GridView最后生成的代码结构,用JS来操作需要隐藏的列。
如果是想不刷新,通过脚本操作表就行了,查看gridview最后生成的html的table,你只要会js操作table来移除列就行了。
另一种,就是选择要显示或隐藏的列,点击提交到后台进行重新绑定,这时后台只要绑定如datatable时,通过移除列就行了。
也建议用js操作(jquery比较简单)如果不用js,每次都去服务器刷新,效率可想而知。。。
后台做成动态绑定生成列,前台可以弹出窗口让用户选择哪些列显示。