2015-12-14 39 views
0

我遇到了一个有趣的问题。为什么复选框没有保持它的价值?

我有一个gridview内的复选框(这是MODAL内)。在CLosingModal事件我正在提取复选框,但它显示FALSE,即使我检查True。

为什么?

<asp:TemplateField HeaderText="Conveyed ?"> 
    <ItemTemplate> 
     <asp:CheckBox ID="chkBoxIsConveyed" runat="server" Checked='<%# Convert.ToBoolean(Eval("IsConveyed")) %>' /> 
     </ItemTemplate> 
</asp:TemplateField> 

的.cs

protected void btnCloseModal_Click(object sender, EventArgs e) 
    { 
     mdlLastHearingDates.Hide(); 

     UpdateIsConveyed(); 

    } 

public void UpdateIsConveyed() 
    { 
     foreach (GridViewRow r in grdViewLastHearingDates.Rows) 
     { 
      int CaseHearingID = Convert.ToInt32(r.Cells[0].Text); 
      CheckBox chkBox = r.FindControl("chkBoxIsConveyed") as CheckBox; 

      MngCaseHearings.UpdateCasesIsConveyed(CaseHearingID, chkBox.Checked); 
     } 
    } 

我调试和它调用的函数。

+0

尝试颠倒你所做的一切。首先更新您的数据,然后隐藏模式。 – Prabhat

+0

好吧,等待先生,我马努 –

+0

对不起,先生,但没有运气:/ –

回答

0

尝试将AutoPostBack值设置为true,我相信在您选中复选框时,它不会触发事件来更新模型。欲了解更多信息,您可以参考https://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.checkbox.autopostback(v=vs.110).aspx

+0

不,它不是真的,它确实触发了事件并仔细阅读了我的问题 –

+0

我假设您的意思是UpdateIsConveyed()事件?但这不是我想说的,我的意思是复选框检查事件。好的,让我进一步解释一下。您将该值绑定到UI(客户端脚本),并且您希望从代码隐藏(服务器端脚本)获取更新的值,然后在执行选中复选框操作时需要将值发回服务器,因此,您需要将AutoPostBack属性添加到您的复选框并将其设置为true。 – Steammike

相关问题