【发布时间】:2017-02-12 08:33:16
【问题描述】:
我有一个网格视图,其中有 10 列。在 10 列中,我有 5 列命名为 Ata、Hplan、Hosp、Other(这 4 列是 checkboxfield)、Othercolor(Boundfield)和 Alta、Hplan 等等..现在我想在用户下拉选择中添加 5 列或全部 10 ..我需要禁用 gridview 的视图状态吗?我怎样才能实现这一点..第二个问题是如何在行数据绑定期间动态绑定这些列event.Basic 是我希望 gridview 列名重复但在数据表中我不能给出重复的列名。请帮助..
protected void Btnshow_Click(object sender, EventArgs e)
{
if (DropDownList1.SelectedIndex==1)
{
dtgridbind.Columns.AddRange(new DataColumn[10] { new DataColumn("1_ALta", typeof(bool)),new DataColumn("1_Hplan", typeof(bool)),
new DataColumn("1_Hosp",typeof(bool)),new DataColumn("1_other",typeof(bool)),new DataColumn("1_othercolor",typeof(string)),
new DataColumn("2_ALta", typeof(bool)),new DataColumn("2_Hplan", typeof(bool)),
new DataColumn("2_Hosp",typeof(bool)),new DataColumn("2_other",typeof(bool)),new DataColumn("2_othercolor",typeof(string))});
dtgridbind.Rows.Add(true, false, false, false, "N/A", false, true, false, false, "Red");
dtgridbind.Rows.Add(true, false, false, false, "N/A", false, true, false, false, "Red");
dtgridbind.Rows.Add(true, false, false, false, "N/A", false, true, false, false, "Red");
GridView1.DataSource = dtgridbind;
GridView1.DataBind();
// ViewState["modechange"] = 1;
}
else
{
dtgridbind.Columns.AddRange(new DataColumn[5] { new DataColumn("1_ALta", typeof(bool)),new DataColumn("1_Hplan", typeof(bool)),
new DataColumn("1_Hosp",typeof(bool)),new DataColumn("1_other",typeof(bool)),new DataColumn("1_othercolor",typeof(string))});
dtgridbind.Rows.Add(true, false, false, false, "N/A");
dtgridbind.Rows.Add(true, false, false, false, "N/A");
dtgridbind.Rows.Add(true, false, false, false, "Red");
// ViewState["grid"] = dtgridbind;
GridView1.DataSource = dtgridbind;
GridView1.DataBind();
}
}
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.Header)
{
foreach (DataColumn datacol in dtgridbind.Columns)
{
if (datacol.ColumnName.Contains("_othercolor"))
{
BoundField bfield = new BoundField();
bfield.HeaderText = datacol.ColumnName.Substring(2, datacol.ColumnName.Length - 2);
bfield.DataField = datacol.ColumnName;
GridView1.Columns.Add(bfield);
}
else
{
CheckBoxField ck = new CheckBoxField();
ck.HeaderText = datacol.ColumnName.Substring(2, datacol.ColumnName.Length - 2);
ck.DataField = datacol.ColumnName;
GridView1.Columns.Add(ck);
}
}
}
【问题讨论】: