Grid View
選択した列ごとに作成するにはどうすればよいですか?
check boxes
列名のリストがあります。ユーザーがチェックボックスを選択して保存すると、グリッドビューに選択された列が表示されます。
私に提案してください。
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>
次に、行作成イベントを含むグリッドビューがあります。
<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;
}
以上です。自動生成されたグリッドビューの場合でも、その方法で列を非表示にできます。ここでは、グリッドビューに5つの列がバインドされていると想定しています。
保存ボタンのクリック時 (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++;
}