【发布时间】:2013-09-07 02:45:11
【问题描述】:
<asp:GridView ID="SearchGrid" runat="server" GridLines="Both" AutoGenerateColumns="false">
<Columns>
<asp:BoundField DataField="Q" HeaderText="Q" />
<asp:TemplateField HeaderText="C">
<ItemTemplate>
<asp:CheckBox ID="CCheckbox" runat="server" AutoPostBack="true" OnCheckedChanged="CCheckbox_CheckedChanged" />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="R">
<ItemTemplate>
<asp:CheckBox ID="RCheckbox" runat="server" AutoPostBack="true" OnCheckedChanged="RCheckbox_CheckedChanged" />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="E">
<ItemTemplate>
<asp:CheckBox ID="ECheckbox" runat="server" AutoPostBack="true" OnCheckedChanged="ECheckbox_CheckedChanged" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
这是我的 GridView 的 Aspx 代码
if (ViewState["SearchGrid"] == null)
{
SearchTable.Columns.Add(new DataColumn("Q", typeof(string)));
SearchTable.Columns.Add(new DataColumn("C", typeof(bool)));
SearchTable.Columns.Add(new DataColumn("R", typeof(bool)));
SearchTable.Columns.Add(new DataColumn("E", typeof(bool)));
ViewState["SearchGrid"] = SearchTable;
}
SearchTable =(DataTable) ViewState["SearchGrid"];
DataRow dr = null;
dr = SearchTable.NewRow();
dr["Q"] = MySearchTextBox.Text;
switch (SearchType)
{
case "Contains": dr["C"] =true;
break;
case "Related": dr["R"] = true;
break;
case "Exact": dr["E"] = true;
break;
}
还有我的代码。
在添加行时,我必须选中一个特定的复选框。 我一直试图通过将其值设为 true 来检查复选框,但它似乎不起作用。有人可以告诉我我在这里做错了什么吗?
【问题讨论】:
-
您是将
CheckBox设置为true 还是将CheckBox.Checked设置为true? -
@garrison 我怎样才能把 checkBox.checked = true?因为控件还没有添加到表中,所以我可以找到控件并检查它?
-
处理 GridView 的
OnRowDataBound事件。找到 CheckBox,根据您的算法设置其Checked值。 -
你在哪里调用你的 c# 代码?在 CheckedChanged 事件处理程序中?
-
嗨,加里森,是的,我这样做了,问题得到了解决,但我的另一个问题是添加另一行后,前一行复选框未被选中,我启用了复选框的视图状态,但仍然是可渗透的行复选框未选中。这个问题有什么解决办法吗?