首页 新闻 赞助 找找看

gridview动态显示列??急,急,急。。。。

0
[已解决问题] 解决于 2010-09-25 10:15

 

刚开始显示全部的列信息,可通过选择字段来选择要显示哪些列,剩下的隐藏!

请问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的列的显示。。。

问题补充: 我用checklistbox做列选择,来对应GRIDVIEW来做,但是不是特比灵活。。。再慢慢想想办法!试试大家推荐的JS。。。谢谢各位
珠儿的主页 珠儿 | 初学一级 | 园豆:4
提问于:2010-09-19 21:29
< >
分享
最佳答案
0

分析GridView最后生成的代码结构,用JS来操作需要隐藏的列。

Astar | 高人七级 |园豆:40805 | 2010-09-20 08:29
其他回答(3)
0

如果是想不刷新,通过脚本操作表就行了,查看gridview最后生成的html的table,你只要会js操作table来移除列就行了。

另一种,就是选择要显示或隐藏的列,点击提交到后台进行重新绑定,这时后台只要绑定如datatable时,通过移除列就行了。

路过秋天 | 园豆:4787 (老鸟四级) | 2010-09-19 23:19
0

也建议用js操作(jquery比较简单)如果不用js,每次都去服务器刷新,效率可想而知。。。

顾晓北 | 园豆:10844 (专家六级) | 2010-09-20 09:13
偏偏我的js不太好 呜呜 可否给点代码参考下下。。。。
支持(0) 反对(0) 珠儿 | 园豆:4 (初学一级) | 2010-09-20 10:03
0

后台做成动态绑定生成列,前台可以弹出窗口让用户选择哪些列显示。

小闵 | 园豆:502 (小虾三级) | 2010-09-24 13:30
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册