![](/img/trans.png)
[英]How to get checkbox value from gridview when checkbox OnCheckedChanged
[英]How to get CheckBox value from GridView when CheckBox selected
我有 GridView 自動填充為
<asp:GridView ID="gvValues" runat="server"
OnRowDataBound="gvValues_RowDataBound"
OnPageIndexChanging="gvValues_PageIndexChanging"
<Columns>
<asp:TemplateField HeaderText="#">
<ItemTemplate>
<%# gvValues.PageSize*gvValues.PageIndex+ Container.DisplayIndex+1 %>
<asp:CheckBox ID="chkProduct" runat="server" CssClass="chkProduct"/>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="online" meta:resourcekey="Online">
<ItemTemplate >
<asp:CheckBox ID="chkProductonline" runat="server" OnCheckedChanged ="chkProductonline_CheckedChanged" AutoPostBack="true"/>
</ItemTemplate>
</asp:TemplateField>
我需要的是當我點擊chkProductonline
復選框時,觸發一個事件並獲取chkProductonline
和chkProducton
值。 我試過這個,但它總是給我空。
protected void chkProductonline_CheckedChanged(object sender, EventArgs e)
{
var chkProductonline = FindControl("chkProductonline") as CheckBox;
// bool ischeck = chkProductonline.Checked;
var chkProduct = gvValues.FindControl("chkProduct") as CheckBox;
}
我無法循環 GridView。 我需要一個一個地做這個。 有沒有另一種方法可以做到這一點?
你可以試試這個:
protected void chkProductonline_CheckedChanged(object sender, EventArgs e)
{
CheckBox chkProductonline = sender as CheckBox;
...
CheckBox chkProduct = chkProductionLine.NamingContainer.FindControl("chkProduct") as CheckBox;
...
}
您需要在特定行上調用 FindControl。 您將無法在整個 GridView 上調用它,因為存在重復的內容(即多個 chkProductionlines 和 chkProducts)。 一行知道它的復選框,而不是其他的。
所以你可以做的是首先獲取調用該事件的 CheckBox(你的發送者參數,chkProductionline)並使用它的NamingContainer 。 由於它包含在 GridView 行中,因此可以使用該行來查找您可能需要的其他控件。
protected void chkProductonline_CheckedChanged(object sender, EventArgs e)
{
CheckBox chkProductionline = (CheckBox)sender;
GridViewRow row = (GridViewRow)chkProductionline.NamingContainer;
CheckBox chkProduct = (CheckBox)row.FindControl("chkProduct");
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.