Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如果值为I',如何选择DropDownList的第一项;m在FormView中传递给它BindItem不在范围内?_C#_Asp.net_Asp.net 4.5 - Fatal编程技术网

C# 如果值为I',如何选择DropDownList的第一项;m在FormView中传递给它BindItem不在范围内?

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.net 4.5中的FormView编辑实体模型,如下所示:

<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;
    }
}
您也可以尝试这种方法(可能更干净):


但我正在寻找另一种方法。