如果通过回发单击复选框,则保留

use*_*502 6 c# asp.net webforms

我有一个在aspx中默认设置为"false"的复选框.然后有一个函数来确定它是真还是假,问题是当在页面上有一个文本框,这个文本框上有一个TextChange事件,当我在文本框中键入内容然后转到复选框此时我可以看到第一次点击整页回发并重置复选框以取消选中..然后我需要再次点击它然后它会坚持..我该怎么做才能让它坚持第一次点击?

我可以使用一些javascript,或者你认为我的选择是什么?

 protected void myTextbox_TextChanged(object sender, EventArgs e)
    {
        ShowCheckBox(true);
    }

  private void ShowCheckBox(bool ckVal)
   {
      myCheckBox.Visible = ckVal;
   }
Run Code Online (Sandbox Code Playgroud)

Wah*_*ver 6

为什么不在更新面板中添加文本框,如下所示:

<asp:UpdatePanel runat="server" ID="test">
    <ContentTemplate>
        <asp:TextBox ID="TEXTBOX" runat="server" Visible="true" AutoPostBack="true"
            OnTextChanged="checkUser" >Page Name</asp:TextBox>
    </ContentTemplate>
    <Triggers>
        <asp:AsyncPostBackTrigger ControlID="TEXTBOX" EventName="TextChanged" />
    </Triggers>
</asp:UpdatePanel>
Run Code Online (Sandbox Code Playgroud)


jru*_*ell 5

我最好的猜测是,每次回发都会运行复选框初始化(将Checked设置为false).比如改变这个

protected void Page_Load(object sender, EventArgs e)
{
    myCheckBox.Checked = false;
}
Run Code Online (Sandbox Code Playgroud)

对此

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
        myCheckBox.Checked = false;
}
Run Code Online (Sandbox Code Playgroud)

但是,在我们有效地帮助您之前,我们需要查看更多代码.部分问题可能是当控件不可见时ViewState不会持久存在.如果你要做的只是显示/隐藏它,请使用其他人建议的javascript.

这是jQuery的一个例子:

$(document).ready(function (){
  $("#myTextBox").change(function() {
    $("#myCheckBox").show();
  });
});
Run Code Online (Sandbox Code Playgroud)