我在GridView中有三個複選框,但用戶只能選擇一個複選框。所以如果他們選擇第一個複選框,我需要提醒他們他們不能選擇其他兩個。檢查GridView中的複選框是否勾選
<asp:GridView CssClass="tblResults" runat="server" ID="dgDetails"
OnRowDataBound="dgDetails_ItemDataBound"
DataKeyField="ID" AutoGenerateColumns="false"
AlternatingRowStyle-BackColor="#EEEEEE">
<HeaderStyle CssClass="tblResultsHeader" />
<Columns>
<asp:TemplateField HeaderText="Approved1">
<ItemTemplate>
<asp:CheckBox runat="server" ID="chkApproved1" />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Approved2">
<ItemTemplate>
<asp:CheckBox runat="server" ID="chkApproved2" />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Approved3">
<ItemTemplate>
<asp:CheckBox runat="server" ID="chkApproved3" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
後面的代碼:
protected void dgDetails_ItemDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
GridView gv = sender as GridView;
Quote.QuoteDetails qd = e.Row.DataItem as Quote.QuoteDetails;
CheckBox chkApproved1 = e.Row.FindControl("chkApproved1") as CheckBox;
CheckBox chkApproved2 = e.Row.FindControl("chkApproved2") as CheckBox;
CheckBox chkApproved3 = e.Row.FindControl("chkApproved3") as CheckBox;
}
}
我試圖用這樣的查詢:
$('#<%= chkApproved1.ClientID %>').change(function() {
if($(this).is(":checked")) {
}
});
但導致錯誤:在當前不存在名稱 'chkApproved1'上下文。
那麼如何檢查GridView中的複選框是否被勾選?
只有公共頁面成員中<%=...%>令牌訪問。將複選框控件修飾符更改爲public,它應該可以工作。 –
將一個類應用於複選框,並按類選擇它們 - 無法找到該id,因爲它是由gridview動態創建的,而不是先前的 – Aristos