我在DataGrid控件中用DropDownList,写法如下:<asp:DropDownList id="onename" Runat="server" DataSource="<%#dv%>" DataTextField="class1_name" DataValueField="class1_name" SelectedIndex='<%# DataBinder.Eval(Container.DataItem, "class1_name") %>'></asp:DropDownList>报错:“/”应用程序中的服务器错误。
--------------------------------------------------------------------------------指定的转换无效。 
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.InvalidCastException: 指定的转换无效。源错误: 
行 37:  </ItemTemplate>
行 38:  <EditItemTemplate>
行 39:  <asp:DropDownList id="onename" Runat="server" DataSource="<%#dv%>" DataTextField="class1_name" DataValueField="class1_name" SelectedIndex='<%# DataBinder.Eval(Container.DataItem, "class1_name") %>'>
行 40:  </asp:DropDownList>
行 41:  </EditItemTemplate>
 源文件: E:\aspnet\manage\manageclass2.aspx    行: 39 

解决方案 »

  1.   

    绑定的值是string型的.
    最好不要这么写,写在后台代码里
      

  2.   

    <asp:DropDownList id="onename" Runat="server">
    </asp:DropDownList>后台代码Page_Load:this.onename.DataSource=dv;
    this.onename.DataTextField="class1_name";
    this.onename.DataValueField="class1_name";
    this.onename.DataBind();
      

  3.   

    SelectedIndex='<%# DataBinder.Eval(Container.DataItem, "class1_name") %>'写在哪里呢?下拉菜单当前显示的是数据库读出来的字段?
      

  4.   

    SelectedIndex='<%# DataBinder.Eval(Container.DataItem, "class1_name") %>'
    上述语句中,SelectedIndex数据格式为INT,而后面的值格式为string,所以出现"指定的转换无效"错误.
    你可尝试改为:
    SelectedValue='<%# DataBinder.Eval(Container.DataItem, "class1_name") %>'不过,下拉框好像不能直接在把选定的项进行绑定.
      

  5.   

    按照 vivianfdlpw() 的方法写报错:
    e:\aspnet\manage\manageclass2.aspx.cs(98,4): error CS0117: “localhost.manage.manageclass2”并不包含对“onename”的定义
    e:\aspnet\manage\manageclass2.aspx.cs(99,4): error CS0117: “localhost.manage.manageclass2”并不包含对“onename”的定义
    e:\aspnet\manage\manageclass2.aspx.cs(100,4): error CS0117: “localhost.manage.manageclass2”并不包含对“onename”的定义
    e:\aspnet\manage\manageclass2.aspx.cs(101,4): error CS0117: “localhost.manage.manageclass2”并不包含对“onename”的定义
      

  6.   

    try<EditItemTemplate>
    <asp:DropDownList id="onename" Runat="server" DataSource="<%#dv%>" DataTextField="class1_name" DataValueField="class1_name" SelectedValue='<%# DataBinder.Eval(Container.DataItem, "class1_name").ToString()%>'>
    </asp:DropDownList>