如何创建按所选列显示列的网格视图?

时间:2012-08-01 12:56:20

标签: asp.net

如何根据所选列创建Grid View

我有列名check boxes的列表。当用户选中复选框并保存它时,网格视图会向我显示所选列。

请建议我。

2 个答案:

答案 0 :(得分:0)

你的问题不是很清楚。如果你想隐藏一些列,那么试试这个:

        for (int i = gridView.Columns.Count - 1; i >= 0; i--)
        {
            if (gridView.Columns[i].GetType().Name == "columnName"
                || gridView.Columns[i].GetType().Name == "columnOtherName")
            {
                gridView.Columns[i].Visible = false;
            }
        }

编辑:

所以你有一个启用了自动回发的复选框列表:

<asp:CheckBoxList ID="checkBoxList1" runat="server" AutoPostBack="true">
    <asp:ListItem Text="column 1" />
    <asp:ListItem Text="column 2" />
    <asp:ListItem Text="column 3" />
    <asp:ListItem Text="column 4" />
    <asp:ListItem Text="column 5" />
</asp:CheckBoxList>

然后你有你的gridview with row create event:

<asp:GridView ID="GridView1" runat="server" OnRowCreated="GridView1_RowCreated"/>

在行创建事件的代码后面您可以根据复选框状态更改单元格的可见性:

protected void GridView1_RowCreated(object sender, GridViewRowEventArgs e)
{
    for (int i = 0; i < checkBoxList1.Items.Count; i++)
        e.Row.Cells[i].Visible = checkBoxList1.Items[i].Selected; 
}

就是这样。您可以通过这种方式隐藏列,即使对于自动生成的gridview也是如此。我假设你的gridview有5列绑定它。

答案 1 :(得分:0)

点击保存按钮(假设checkboxlist中的项目顺序与网格中的列相同):

      int index = 0;
      foreach (var checkbox in checkBoxList.Items)
      {
          if(checkbox.Selected)
           {
           GridView1.Columns[index].Visible = true;
          }
        else
         {
          GridView1.Columns[index].Visible = false;
          }
        index++;
      }