hier ein komplettes Beispiel Gridview Spalten auf einem CheckBoxList Basis zu verstecken.
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
//fill the datatable from the database
DataTable dt = //fill the table here...
//bind the table to the grid
GridView1.DataSource = dt;
GridView1.DataBind();
//loop all the datatable columns to fill the checkboxlist
for (int i = 0; i < dt.Columns.Count; i++)
{
CheckBoxList1.Items.Insert(i, new ListItem(dt.Columns[i].ColumnName, dt.Columns[i].ColumnName, true));
}
}
}
protected void CheckBoxList1_TextChanged(object sender, EventArgs e)
{
//loop all checkboxlist items
foreach (ListItem item in CheckBoxList1.Items)
{
if (item.Selected == true)
{
//loop all the gridview columns
for (int i = 0; i < GridView1.Columns.Count; i++)
{
//check if the names match and hide the column
if (GridView1.HeaderRow.Cells[i].Text == item.Value)
{
GridView1.Columns[i].Visible = false;
}
}
}
}
}
Und auf der ASPX-Seite
<asp:CheckBoxList ID="CheckBoxList1" runat="server" OnTextChanged="CheckBoxList1_TextChanged" AutoPostBack="true"></asp:CheckBoxList>
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false">
<Columns>
<asp:BoundField DataField="field01" HeaderText="Column A" />
<asp:BoundField DataField="field02" HeaderText="Column B" />
<asp:BoundField DataField="field03" HeaderText="Column C" />
<asp:BoundField DataField="field04" HeaderText="Column D" />
<asp:BoundField DataField="field05" HeaderText="Column E" />
</Columns>
</asp:GridView>
Beachten Sie, dass AutoGenerateColumns
auf false gesetzt ist. Wenn sie automatisch generiert werden, sind die Spalten nicht Teil der GridView Columns Collection.
Und natürlich HeaderText="xxx"
müssen die Spaltennamen aus der Datenbank übereinstimmen, die in der DataTable gespeichert sind.
Bro ich habe nicht boundfield in gridview verwendet ... ich möchte Datenbanktabellenspalten an checkboxlist binden und dann dynamisch in gridview zeigen ... – Vinoth
@Vinoth Bitte senden Sie Ihren Code. –
Ich erstelle eine Webseite, die VS2015 verwendet Ich gebe eine Tabelle aus einer Datenbank zurück. Ich möchte eine Checkbox-Liste mit den Spaltennamen aus der von der Datenbank zurückgegebenen Tabelle ausfüllen. Gibt es das überhaupt, um das zu tun? oder kann ich die Datenbank abfragen und sie eine Tabelle der Spaltennamen zurückgeben lassen? Die Checkbox-Liste wird verwendet, damit der Benutzer entscheiden kann, welche Spalten angezeigt werden sollen. – Vinoth