发布时间:2018-10-22编辑:admin阅读(2697)
GridView本身不带有这个功能,于是就想能不能通过一些简单的土方法实现。
首先想到的是用CheckBox来关联列的显示和隐藏,因为有多个列,所以选用CheckBoxList。显示和隐藏就通过设置GridView列的Visible属性。大致思路如下:
添加一个CheckBoxList和GridView控件。
添加GridView列。
遍历GridView列,动态添加CheckBoxList项。
当CheckBoxList项选择状态改变时,设置GridView列的显示和隐藏。
如果需要保存状态,可以将CheckBoxList状态保存到数据库。
核心代码:
void BindCheckBoxList() { CheckBoxList1.Items.Clear(); for (int i = 0; i < GridView1.Columns.Count; i++) { string txt = GridView1.Columns[i].HeaderText.Trim(); if (txt != "") { CheckBoxList1.Items.Add(txt); //从数据库读取数据,设置状态,这里省略部分代码 if (ds.Tables[0].Rows.Count == 0) { CheckBoxList1.Items[CheckBoxList1.Items.Count - 1].Selected = true; GridView1.Columns[i].Visible = true; } else GridView1.Columns[i].Visible = false; } } }
protected void CheckBoxList1_SelectedIndexChanged(object sender, EventArgs e) { string s = Request.Form["__EVENTTARGET"]; int index = Convert.ToInt32(s.Substring(s.LastIndexOf("$") + 1)); string strColumnName = CheckBoxList1.Items[index].Text.Trim(); string strDisplay = CheckBoxList1.Items[index].Selected ? "1" : "0"; //更新数据库状态,重新绑定,这里省略部分代码 if (res > 0) { BindCheckBoxList(); } }
关键字: asp.net GridView 自定义 显示 列
0人
0人
0人
0人