一个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>

解决方案 »

  1.   

    在编辑事件中
    找到这个Dropdownlist1然后findbytext所在城市的值(可以改成label).selected=true
      

  2.   

    <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">
    <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;
    随便写的,可能有错
      

  3.   

    dropdownlist的事件处理不能放在ItemCommand里处理,要另行处理:
    <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
      

  4.   

    我不是这上意思:
    <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()