一个datagrid,有编辑,我想点击编辑时表格中的第二列“所在城市”这一列显示下拉列表框,要和表城市这张表绑定。下面的程序是没有绑定的,我想如何绑定在表格中的控件?这个下拉框是第二列的第二个控件。请教如何写?代码是否写在编辑这个子程序中?
<asp:TemplateColumn HeaderText="所在城市" SortExpression="busstatus">
<ItemTemplate>
<%# DataBinder.Eval(Container.DataItem,"compname") %>
</ItemTemplate>
<EditItemTemplate>
<asp:DropDownList Runat="server" ID="Dropdownlist1">
<asp:ListItem Value="1">上海</asp:ListItem>
<asp:ListItem Value="0">江苏</asp:ListItem>
</asp:DropDownList>
</EditItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn HeaderText="所在城市" SortExpression="busstatus">
<ItemTemplate>
<%# DataBinder.Eval(Container.DataItem,"compname") %>
</ItemTemplate>
<EditItemTemplate>
<asp:DropDownList Runat="server" ID="Dropdownlist1">
<asp:ListItem Value="1">上海</asp:ListItem>
<asp:ListItem Value="0">江苏</asp:ListItem>
</asp:DropDownList>
</EditItemTemplate>
</asp:TemplateColumn>
找到这个Dropdownlist1然后findbytext所在城市的值(可以改成label).selected=true
<ItemTemplate>
<asp:Label Text='<%# DataBinder.Eval(Container.DataItem,"compname") %>' id="lab" renat="server">
</ItemTemplate>
<EditItemTemplate>
<asp:DropDownList Runat="server" ID="Dropdownlist1">
<asp:ListItem Value="1">上海</asp:ListItem>
<asp:ListItem Value="0">江苏</asp:ListItem>
</asp:DropDownList>
</EditItemTemplate>
</asp:TemplateColumn>
编辑事件
{
((Dropdownlist)e.Item.FindControl("Dropdownlist1")).Items.FindByText(((TextBox)e.Item.FindControl("lab")).Text).Selected=true;
随便写的,可能有错
<asp:TemplateColumn HeaderText="所在城市" SortExpression="busstatus">
<ItemTemplate>
<asp:Label Text='<%# DataBinder.Eval(Container.DataItem,"compname") %>' id="lab" renat="server">
</ItemTemplate>
<EditItemTemplate>
<asp:DropDownList Runat="server" ID="Dropdownlist1" OnSelectedChanged="Dropdownlist1_SelectedChanged">
<asp:ListItem Value="1">上海</asp:ListItem>
<asp:ListItem Value="0">江苏</asp:ListItem>
</asp:DropDownList>
</EditItemTemplate>
</asp:TemplateColumn>
然后自己写一个处理函数:public void Dropdownlist1_SelectedChanged(...)//这儿要用public
<asp:TemplateColumn HeaderText="所在城市" SortExpression="busstatus">
<ItemTemplate>
<%# DataBinder.Eval(Container.DataItem,"compname") %>
</ItemTemplate>
<EditItemTemplate>
<asp:DropDownList Runat="server" ID="city">
</asp:DropDownList>
</EditItemTemplate>
</asp:TemplateColumn
------------------------------------
我现在想把城市表与它绑定,我在edit程序中这样写但出错,
异常详细信息: System.NullReferenceException: 未将对象引用设置到对象的实例。
DataGrid1.EditItemIndex = CInt(e.Item.ItemIndex) Dim objconn As Data.SqlClient.SqlConnection
Dim objcmd As Data.SqlClient.SqlCommand
Dim strdsn, sqlstr, tyb As String
Dim citydrop As System.Web.UI.WebControls.DropDownList
strdsn = ConfigurationSettings.AppSettings("connstring")
sqlstr = "SELECT * FROM company"
objconn = New SqlConnection(strdsn)
objconn.Open()
objcmd = New SqlCommand(sqlstr, objconn)
citydrop = e.Item.FindControl("city")
citydrop.DataSource = objcmd.ExecuteReader
citydrop.DataTextField = "compname"
citydrop.DataValueField = "compid"
citydrop.DataBind()
objconn.Close()