【发布时间】:2014-08-09 21:50:00
【问题描述】:
我无法通过选中复选框来获取 Grid 中的行值。选中的复选框在后面的代码中总是错误的。请帮我解决这个问题。提前致谢
这是我的 aspx 代码:
<asp:GridView ID="resumeSearchGrid" DataKeyNames="CandidateID" CellPadding="5" runat="server" Width="100%" AutoGenerateColumns="false">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:CheckBox ID="chkSelect" runat="server"/>
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="CandidateID" HeaderText="CandidateID" Visible="false" />
<asp:BoundField DataField="CandidateName" HeaderText="Name" />
<asp:BoundField DataField="EmailID" HeaderText=" Email Id" />
</Columns>
</asp:GridView>
<asp:Button ID="Button1" class="button" runat="server"
Text="Send to client" onclick="Button1_Click"></asp:Button>
这是我的代码:
protected void Button1_Click(object sender, EventArgs e)
{
foreach (GridViewRow gvrow in resumeSearchGrid.Rows)
{
CheckBox chk = (CheckBox)gvrow.FindControl("chkSelect");
if (chk != null && chk.Checked)
{
Name += resumeSearchGrid.DataKeys[gvrow.RowIndex].Value.ToString() + ',';
eMail += gvrow.Cells[2].Text + ',';
}
}
}
【问题讨论】:
-
您将 chk 设为 null 还是将其检查为 false?
-
您的页面上有更新面板吗?有时它们会导致此类问题
-
最初我没有检查更新面板,然后检查了更新面板。在这两种情况下它都不起作用。还是我越来越假了。
-
看起来很奇怪!!尝试在您的页面中创建另一个网格并仅在其中放置一个复选框,看看您是否能够获取其选中值。
-
您是否在复选框列表的内容面板中放置了提交按钮的触发器?