c# - 单选按钮列表选择的不连贯回发行为
问题描述
我有一个:
RadioButtonList 默认选择第一项。
LinkButton 取消选择此选项。
LinkButton 显示 RadioButtonList 的索引
如果我单击取消选择,然后单击保存,则会显示第一项的索引 0。这种看似错误的行为是由重新加载页面并根据默认设置进行选择的回发引起的。
但是:如果我现在选择 List 的 Item2 然后单击保存,我希望回发将 RadioButtonList 重置为其初始值的行为相同。但显示 List-Item2 的索引 1。
所以“未选择”在回发时被否决,而“选择”不是!真的是这样吗?混乱且难以处理。
<asp:RadioButtonList ID="RBL_SelectType" runat="server">
<asp:ListItem Text="Choice1" Value="0" Selected="True" />
<asp:ListItem Text="Choice2" Value="1" />
</asp:RadioButtonList>
<asp:LinkButton ID="LB_Reset" runat="server" OnClick="Unselect">unselect RBL</asp:LinkButton>
<asp:LinkButton ID="LB_Save" runat="server" OnClick="Save">Save</asp:LinkButton>
<asp:Label runat="Server" ID="Message" />
和:
protected void Save(object sender, EventArgs e)
{
Message.Text = "Index = " + Convert.ToString(RBL_SelectType.SelectedIndex);
}
protected void Unselect(object sender, EventArgs e)
{
RBL_RBL_SelectType.SelectedIndex = -1;
}
解决方案
这是我遇到的问题的解决方案,尽管它不能解释我眼中一直语无伦次的行为;我希望从其他用户那里收到更多关于此行为的反馈或确认。
因此,每当您需要为 RadioButtonList 设置默认选择时,请勿在标记中执行此操作,因为它会在回发后丢失“未选择”选择,但请在 page_load 后面的代码中执行此操作。
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
RBL_SelectType.SelectedIndex = 0;
}
推荐阅读
- amazon-web-services - 如何从 CLI 进行所有 S3 存储桶配置设置?
- python - 如何访问存储在 Django 中的 ManyToMany 相关表中的数据?
- ios - 我们如何获得 iOS 15.1 模拟器?
- javascript - 如何将公会变量传递给 discord.js 中的事件文件?
- android - 在浓缩咖啡测试中瞄准 NachoChip
- mysql - 根据另一个表中的值更新一个表的列值
- r - 如何根据组件节点的最大度数在图的组件之间添加边
- asp.net-mvc - 局部视图中的 asp-for 不会生成正确的 id 名称
- haskell - Haskell:获取所有路径
- arrays - 为什么我一直打印出内存地址而不是数组值?