C# 如果值为I',如何选择DropDownList的第一项;m在FormView中传递给它BindItem不在范围内?
我正在使用Asp.net 4.5中的FormView编辑实体模型,如下所示:C# 如果值为I',如何选择DropDownList的第一项;m在FormView中传递给它BindItem不在范围内?,c#,asp.net,asp.net-4.5,C#,Asp.net,Asp.net 4.5,我正在使用Asp.net 4.5中的FormView编辑实体模型,如下所示: <asp:FormView runat="server" ....> <EditItemTemplate> ..... <asp:DropDownList runat="server" SelectedValue='<%# BindItem.value %>'> </asp:DropDownList> .....
<asp:FormView runat="server" ....>
<EditItemTemplate>
.....
<asp:DropDownList runat="server" SelectedValue='<%# BindItem.value %>'>
</asp:DropDownList>
.....
</EditItemTemplate>
</asp:FormView>
.....
.....
如果BindItem.value是DropDownList项中的一个值,则此操作非常有效,但如果BindItem.value为空或任何值超出范围,则会引发如下异常:
<asp:FormView runat="server" ....>
<EditItemTemplate>
.....
<asp:DropDownList runat="server" SelectedValue='<%# BindItem.value %>'>
</asp:DropDownList>
.....
</EditItemTemplate>
</asp:FormView>
选择超出范围参数名称:value
如果BindItem.value出错,有没有办法让DropDownList选择第一项?这肯定是ASP.NET中一直困扰我的问题之一。将数据绑定到下拉列表不是很聪明 我经常手工解决这个问题,而不是使用单向/双向数据绑定。在Page_PreRender中,您只需手动检查集合是否包含该值。如果没有,请选择索引0。注意,您可能必须首先绑定数据
private void Page_PreRender(object sender, System.EventArgs e)
{
if (formview1.CurrentMode == FormViewMode.Edit)
{
DropDownList ddl = formview1.FindControl("dropdownlist1");
ddl.ClearSelection();
var item = ddl.FindByValue("[MYVALUE]");
if (item == null) ddl.SelectedIndex = 0;
else item.Selected = true;
}
}
您也可以尝试这种方法(可能更干净):
但我正在寻找另一种方法。