前任:mypage.aspx?num=xxx
如何通过代码隐藏将num
复选框列添加到mypages 中的Gridview ?
我已经使用参数向Datatablenum
添加了列,但是当我加载 mypage 时,复选框被禁用,因此我无法检查它们。typeof(bool)
这是我的网格 aspx 代码
<asp:GridView ID="gv" runat="server" AutoGenerateColumns="false">
<Columns>
</Columns>
</asp:GridView>
首先将num
模板字段的数量添加到您的gridview
protected void Page_PreInit(object sender, EventArgs e)
{
int num = Request.QueryString["num"];
for (int i = 0; i < num; i++)
{
TemplateField tf = new TemplateField();
tf.HeaderText = "Status";
gv.Columns.Add(tf);
}
}
添加模板字段后,现在我们将在 gridview 中添加复选框。我们编写一个函数来添加复选框。下面是代码
private void AddCheckBox()
{
int num = Request.QueryString["num"];
for (int i = 0; i < num; i++)
{
foreach (GridViewRow row in gv.Rows)
{
if (row.RowType == DataControlRowType.DataRow)
{
CheckBox cb = new CheckBox();
cb.Checked = true;
row.Cells[i].Controls.Add(cb);
}
}
}
}
现在将此函数放在您的网格数据绑定事件中。
protected void gv_DataBound(object sender, EventArgs e)
{
AddCheckBox();
}
最后还在页面加载事件中调用该函数,因此第一次在网格加载时显示复选框已选中
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
AddCheckBox();
}
}
要检查我的代码: 我将绑定字段添加到网格视图并将网格视图与数据表绑定:
<asp:GridView ID="gv" runat="server" AutoGenerateColumns="false">
<Columns>
<asp:BoundField DataField="Data" HeaderText="Data" />
</Columns>
</asp:GridView>
并在page_load事件后面的代码中添加以下代码
DataTable dt = new DataTable();
dt.Columns.Add("Data");
DataRow dr = dt.NewRow();
dr[0] = "Test";
dt.Rows.Add(dr);
gv.DataSource = dt;
gv.DataBind();
并且还在 AddCheckBox 函数中进行了 1 处更改
for (int i = 1; i < num + 1; i++)
进行上述更改是因为我在网格视图列的索引 0 处有一个数据绑定字段,因此我将其更改为从 1 开始。
这是结果(页面输出)
Data Status Status Status Status Status Status Status Status Status Status
Test Checked Checked Checked Checked Checked Checked Checked Checked Checked Checked
Checked 用于复选框被选中
采用:
Request.QueryString["num"]
获取 URL 中 num 的值。然后迭代 num 次,每次都将 CheckBoxField 添加到您的 GridView 中。