0

如何Grid View根据选定的列创建?

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

请给我建议。

4

2 回答 2

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 与行创建事件:

<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 有 5 列绑定到它。

于 2012-08-01T13:18:23.730 回答
0

单击保存按钮时(假设复选框列表中的项目顺序与网格中的列相同):

      int index = 0;
      foreach (var checkbox in checkBoxList.Items)
      {
          if(checkbox.Selected)
           {
           GridView1.Columns[index].Visible = true;
          }
        else
         {
          GridView1.Columns[index].Visible = false;
          }
        index++;
      }
于 2012-08-01T13:27:54.487 回答