【问题标题】:RadioButtonList won't change after doPostBack - ASP.NET JS C#在 doPostBack 之后 RadioButtonList 不会改变 - ASP.NET JS C#
【发布时间】:2014-03-05 08:57:43
【问题描述】:

我在Panel 中有一个radioButtonList。该面板使用UpdatePanel 更新其面板。

<asp:UpdatePanel ID="upnlTeacherDismissal" runat="server" UpdateMode="Conditional" OnLoad="tmrRefreshTeacher_OnTick">
  <asp:Panel ID="pnlDismissalTeacher" runat="server"; color:White; width:100%;">
    <asp:RadioButtonList ID="rbtnStatusDismissal" AutoPostBack="true"
                                runat="server" RepeatDirection="Horizontal" OnSelectedIndexChanged="rbtnStatusDismissal_OnSelectedIndexChanged" >
      <asp:ListItem ID="id1" Text="In Class" Value="1" />
      <asp:ListItem ID="id2" Text="Dismiss" Value="4" />
      <asp:ListItem ID="id3" Text="Field Trip" Value="5" />
    </asp:RadioButtonList>

更新面板每 5 秒刷新一次,这是由 Javascript 函数触发的(我知道 System.Class.UI 有计时器,但由于某种原因我必须使用 JS 函数)。这是刷新功能:

function refresh() {  
     //update teacher panel
     __doPostBack('<%=upnlTeacherDismissal.UniqueID%>', '');
}

setInterval(refresh, 5000);

doPostBack 在后面的代码中,我想将单选按钮的值设置为数据库中的更新值,但 UI 没有任何变化(单选按钮的值仍然是 1)。程序将每 5 秒执行一次此函数(不是来自rbtnStatusDismissal_OnSelectedIndexChanged)。

protected void tmrRefreshTeacher_OnTick(object sender, EventArgs e)
        {
    //... few lines to check the database if table changes 
    rbtnStatusDismissal.SelectedValue = (int)data.statusID; 
    //let's say (int)data.statusID equals 5
    upnlTeacherDismissal.Update();
}

我尝试调试并看到 .SelectedValue 已设置为 data.statusID 的值(比如说 5)。但是 UI 中单选按钮的值仍然等于 1(而不是 5)。 出了什么问题,我该怎么办?

【问题讨论】:

    标签: c# javascript jquery asp.net updatepanel


    【解决方案1】:

    它对我来说很完美,你错过了我编辑的东西并替换它

    <asp:UpdatePanel ID="upnlTeacherDismissal" runat="server" UpdateMode="Conditional" >
      <ContentTemplate>
        <asp:Panel ID="pnlDismissalTeacher" runat="server" style="color:White; width:100%;">
          <asp:RadioButtonList ID="rbtnStatusDismissal" AutoPostBack="true" runat="server" RepeatDirection="Horizontal" OnSelectedIndexChanged="rbtnStatusDismissal_OnSelectedIndexChanged">
            <asp:ListItem ID="id1" Text="In Class" Value="1" />
            <asp:ListItem ID="id2" Text="Dismiss" Value="4" />
            <asp:ListItem ID="id3" Text="Field Trip" Value="5" />
          </asp:RadioButtonList>
        </asp:Panel>
      </ContentTemplate>
    </asp:UpdatePanel>
    

    在服务器端

    protected void rbtnStatusDismissal_OnSelectedIndexChanged(object sender, EventArgs e)
    {
        rbtnStatusDismissal.SelectedValue = "5";
        upnlTeacherDismissal.Update();            
    }
    

    还有这个js函数

    <script type="text/javascript">
        function refresh() {  
               //update teacher panel
               __doPostBack('<%=upnlTeacherDismissal.UniqueID%>', '');
            }
    
        setInterval(refresh, 5000);
    </script>
    

    如果您有任何问题并且得不到答案,请在 cmets 中提问。

    【讨论】:

    • 我当然添加了结束标签,但它仍然对我不起作用。
    • 您是否在更新面板中添加了内容模板并从更新面板中删除了 onload..@user2393874
    • 是的,但仍然没有变化,看起来 UI 不会更新
    • 你试过我的代码,包括javascript函数和后面的代码吗?
    • 是的,我已经尝试过您的代码,当我选择任何值时,它的值会发生变化,这意味着选择了 id3。并且您是否在面板中添加了样式属性? ..你有没有检查过你的控制台任何相关的错误。@user2393874
    猜你喜欢
    • 1970-01-01
    • 2021-09-15
    • 2021-05-11
    • 1970-01-01
    • 2011-09-04
    • 2012-12-01
    • 1970-01-01
    • 2011-12-12
    • 1970-01-01
    相关资源
    最近更新 更多