У меня есть проект, в котором я пытаюсь проверить элемент управления CheckBox в GridView. К сожалению, всякий раз, когда я это делаю, он никогда не проверяется и каждый раз возвращает false. Итак, вот код, который я пробовал до сих пор:
ASP.NET
<asp:GridView ID = "grdAssignMenu" runat = "server" AutoGenerateColumns = "False" CssClass = "custListTBL" Height = "298px" Width = "324px">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:CheckBox ID = "chkControl" runat = "server" />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText = "Menu Name">
<ItemTemplate>
<asp:Label ID = "lblMenu" runat = "server" Text='<%# Eval("roleName").ToString() %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
C#
protected void btnSave_Click(object sender, EventArgs e)
{
foreach (GridViewRow row in grdAssignMenu.Rows)
{
System.Web.UI.WebControls.CheckBox cb = (System.Web.UI.WebControls.CheckBox)row.FindControl("chkControl");
bool status = cb.Checked;
if (cb.Checked) //Returns false every time, even though checked
{
System.Web.UI.WebControls.Label lbl = (System.Web.UI.WebControls.Label)row.FindControl("lblMenu");
string lblValue = lbl.Text;
lblMsg.Text = lblValue;
}
}
}
В основном я хочу получить связанные данные с CheckBox, которые проверены и уверены, что приведенный выше код является рабочим. Но застрял, и любое предложение очень заметно.





Пожалуйста, попробуйте использовать (! IsPostBack) перед привязкой gridview, если это еще не сделано. Возможно, ваш gridview обновляется каждый раз, когда aspx-страница возвращается в код. Также, если это не помогает, поделитесь кодом загрузки страницы или кодом, в котором вы привязываете gridview.
Большое спасибо @Ratan. Это действительно сработало и спасло мне день.
Конечно, проблема начинается при создании, потому что, когда gridview создает флажки, не инициализирует их значением обратной передачи. Он просто отображает это. Как вы инициализируете этот GridView?