日期:2014-05-17  浏览次数:20441 次

无法将类型为“DataBoundLiteralControl”的对象强制转换为类型“WebControls.DropDownList”
一个Datagrid

前台代码:


<Columns>
<asp:BoundColumn  ReadOnly="true"  DataField="A">
<ItemStyle Wrap="False"></ItemStyle>
</asp:BoundColumn>

<asp:BoundColumn    DataField="B">
<ItemStyle Wrap="False"></ItemStyle>
</asp:BoundColumn>

<asp:TemplateColumn HeaderText="类型">
<ItemTemplate>
<%# ShowType(DataBinder.Eval(Container.DataItem,"TypeName").ToString()) %>
</ItemTemplate>
<EditItemTemplate>
<asp:DropDownList runat="server" ID="Dropdownlist1"   AutoPostBack="true"   OnSelectedIndexChanged="Dropdownlist1_SelectedIndexChanged" ></asp:DropDownList>
</EditItemTemplate>
</asp:TemplateColumn>


<asp:EditCommandColumn CancelText="取消" EditText="编辑" UpdateText="更新"></asp:EditCommandColumn>



后台代码:



public void edit(object sender, DataGridCommandEventArgs e)
        {

DropDownList list1 = (DropDownList)dgVidicon.Items[e.Item.ItemIndex].Cells[2].Controls[0];

        }




程序运行之后报错,出错在这条代码上:

DropDownList list1 = (DropDownList)dgVidicon.Items[e.Item.ItemIndex].Cells[2].Controls[0];




出错信息是:


无法将类型为“System.Web.UI.DataBoundLiteralControl”的对象强制转换为类型“System.Web.UI.WebControls.DropDownList”。



------解决方案--------------------
试试
DropDownList list1 = (DropDownList)dgVidicon.Items[e.Item.ItemIndex].Cells[2].FindControl("Dropdownlist1");
------解决方案--------------------
引用:
Quote: 引用:

调试一下,看 (DropDownList)dgVidicon.Items[e.Item.ItemIndex].Cells[2].Controls[0]值是什么嘛