如何Grid View
根据选定的列创建?
我有check boxes
列名列表。当用户选择复选框并保存它时,网格视图向我显示选定的列。
请给我建议。
你的问题不是很清楚。如果您想隐藏某些列,请尝试以下操作:
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 列绑定到它。
单击保存按钮时(假设复选框列表中的项目顺序与网格中的列相同):
int index = 0;
foreach (var checkbox in checkBoxList.Items)
{
if(checkbox.Selected)
{
GridView1.Columns[index].Visible = true;
}
else
{
GridView1.Columns[index].Visible = false;
}
index++;
}