我在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)。 出了什么问题,我应该做什么?
最佳答案
它非常适合我,你缺少我编辑过的东西并替换它
<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>
如果您有任何问题且得不到答复,请在评论中提问。
关于c# - RadioButtonList 在 doPostBack 之后不会更改 - ASP.NET JS C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22192866/