1

使用以下代码时,会返回此错误: “rblPermisSejourA”有一个无效的 SelectedValue,因为它不存在于项目列表中。

<asp:RadioButtonList ID="rblPermisSejour" runat="server"
DataSourceID="EntityDataSourcePermisSejour" DataTextField="Libelle"
DataValueField="Id" AppendDataBoundItems="True" RepeatDirection="Horizontal">
<asp:ListItem Selected="True" Text="" Value="-1">Aucun</asp:ListItem>
</asp:RadioButtonList>

<asp:RadioButtonList ID="rblPermisSejourA" runat="server"
DataSourceID="EntityDataSourcePermisSejour" DataTextField="Libelle"
DataValueField="Id" AppendDataBoundItems="True" RepeatDirection="Horizontal">
<asp:ListItem Selected="True" Text="" Value="-1">Aucun</asp:ListItem>
</asp:RadioButtonList>

protected void ws2_OnDeactivate(object sender, EventArgs e)
{
  rblPermisSejourA.SelectedValue = rblPermisSejour.SelectedValue;
}

请注意,“rblPermisSejour”在一个向导步骤中,“rblPermisSejourA”在另一个尚未激活的向导步骤中(没有 id 和没有标题,女巫中有“rblPermisSejourA”)。激活此步骤后,一切正常。
但是使用与另一个 RadioButtonList 相同的代码和相同的操作,它运行良好,并且在相同的上下文中(未激活向导步骤)。

4

3 回答 3

0

从你的评论

<asp:ListItem Selected="True" Value="1">A</asp:ListItem>
<asp:ListItem Selected="True" Value="2">C</asp:ListItem>

你有两个项目 selected="true" 所以调用 .SelectedValue 可能是一个问题,因为它不知道你的意思是哪个值。这些列表项是 rblPermisSejourA 还是 rblPermisSejour?如果您编辑您的问题以添加两个列表,我们可以看到这一行

rblPermisSejourA.SelectedValue = rblPermisSejour.SelectedValue;

试图做并找出你的错误。

编辑

你有没有尝试过类似的东西

rblPermisSejourA.Items.FindByValue(rblPermisSejour.SelectedValue).Selected = true;
于 2012-11-23T14:34:58.493 回答
0

你有没有尝试过

rblPermisSejourA.SelectedValue = rblPermisSejour.SelectedItem.Value;
于 2012-11-25T05:50:55.040 回答
0

这是解决方案:

if (rblPermisSejourA.Items.Count <= 1)
    rblPermisSejourA.DataBind(); //添加以更正错误
rblPermisSejourA.SelectedValue = rblPermisSejour.SelectedValue;

于 2012-11-28T12:23:04.377 回答