asp.net GridView自定义显示列

发布时间:2018-10-22编辑:admin阅读(2161)

GridView本身不带有这个功能,于是就想能不能通过一些简单的土方法实现。

首先想到的是用CheckBox来关联列的显示和隐藏,因为有多个列,所以选用CheckBoxList。显示和隐藏就通过设置GridView列的Visible属性。大致思路如下:

  1. 添加一个CheckBoxList和GridView控件。

  2. 添加GridView列。

  3. 遍历GridView列,动态添加CheckBoxList项。

  4. 当CheckBoxList项选择状态改变时,设置GridView列的显示和隐藏。

  5. 如果需要保存状态,可以将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.netGridView自定义显示


鼓掌

0

正能量

0

0

呵呵

0


评论区