我需要在c#中为gridview添加复选框列。
我有我的代码:
foreach (GridViewRow objRow in GrdDynamicControls.Rows)
{
if (dttableDetails.Columns.Contains(strColumnName))
{
position = dttableDetails.Columns[strColumnName].Ordinal;
if (strtype.Contains("CheckBox"))
{
try
{
GrdDynamicControls.Rows[i].Cells.RemoveAt(position);
chkCheckBox.ID = strControlName;
chkCheckBox.AutoPostBack = true;
tcCheckCell.Controls.Add(chkCheckBox);
objRow.Cells.Add(tcCheckCell);
// GrdDynamicControls.Rows[i].Cells.AddAt(position, tcCheckCell);
}
catch { }
chkCheckBox.CheckedChanged += new EventHandler(chkCheckBox_CheckedChanged);
}
}
}
但这会覆盖gridview中每个objrow的复选框。我无法获取gridview.pls帮助中所有行的特定列的复选框...
答案 0 :(得分:1)
为什么不在标记中使用TemplateField控件,而是在模板中定义复选框?管理起来会更容易......
<asp:GridVIew ...>
<Columns>
<asp:TemplateField ..>
<asp:CheckBox .. />
</asp:TemplateField>
</Columns>
</asp:GridVIew>
只需在标记中设置所有内容
答案 1 :(得分:0)
尝试在gridview上使用OnRowDataBound事件。您可以使用它来指定要为每行使用的控件。这是一个用例子解释的链接。
http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.gridview.rowdatabound.aspx
答案 2 :(得分:-1)
在标记中使用TemplateField控件,并在模板中定义复选框:
<asp:TemplateField HeaderText="Delete" ItemStyle-Width="39px">
<ItemTemplate>
<center>
<asp:CheckBox ID="chkDelete" runat="server" />
</center>
</ItemTemplate>
</asp:TemplateField>