关于在DataGrid的编辑模板中套用一个DropDownList控件,而DropdownList的数据源不是自己手动添加的一些项。而是数据库中读取出来的。
   怎样能够使得,DropDownList能够绑定到数据啊。要设置什么属性啊。
   谢谢!大家的参与。

解决方案 »

  1.   

    o = document.getElementById("DropDownList1")
    var a = new Array("1","2")
    for(i = 0;i<a.length;i++)
    o.options[o.options.length] = new Option(a[i],a[i])
      

  2.   

    可以在ItemDataBound  的方法中进行这个 步骤
      

  3.   

    aspx:
    <EditItemTemplate>
    <asp:DropDownList id="DropDownList1" runat="server"></asp:DropDownList>
    </EditItemTemplate>
    cs:
    为DataGrid添加ItemDataBound事件
    private void DataGrid_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
    {
    if(e.Item.ItemType==ListItemType.EditItem)
    {
    DataSet myDs=SqlHelper.ExecuteDataset(MyGet.GetConnString(),CommandType.Text,"select * from TB_Role");
    DropDownList ddl=(DropDownList)e.Item.FindControl("DropDownList1");
    ddl.DataSource=myDs.Tables[0];
    ddl.DataTextField="RoleDesc";
    ddl.DataValueField="RoleValue";
    ddl.DataBind();
    ddl.SelectedValue=Convert.ToString(DataBinder.Eval(e.Item.DataItem,"RoleValue"));
    //ddl.Items.FindByValue(Convert.ToString(DataBinder.Eval(e.Item.DataItem,"RoleValue"))).Selected=true;//选择数据库内的作为默认
    }
    }
    这是我用过的例子
      

  4.   

    如果每一行的DropDownList的值都不同,可以把DropDownList放在一个WebUserControl中。WebUserControl
    对外做一个属性就是你要查询的条件字段,DataGrid绑定时绑定WebUserControl的这个属性,
    这样就可以在WebUserControl中给DropDownList付值。
    WebUserControl中的这个属性字段需要放在ViewStart中保存。
      

  5.   

    页面上的模版列中添加id=dropdown的服务段dropdownlist
    给dataGrid添加ItemDataBound事件
    private void dataGrid1_ItemDataBound(object sender, DataGridItemEventArgs e)
    {
                          System.Web.UI.WebControls.DropDownList drop = (System.Web.UI.WebControls.DropDownList)e.Item.FindControl("dropDown");
                          drop.DataSource = GetData();drop.DataTextField = "Name";
    drop.DataValueField = "ID";drop.DataBind();
    }
    GetData表示取出所要绑定的数据,DataTextField表示要显示在Dropdown的字段,DataValueField表示DropDown的实际字段.
      

  6.   

    GetData里面的查询条件如果是DataGrid的数据集的一项,可以通过以下代码取到
    {
      DataRow row = (DataRow)e.Item.DataItem;
    }
      

  7.   

    <EditItemTemplate>
    <asp:DropDownList id="DropDownList1" runat="server"></asp:DropDownList>
    </EditItemTemplate>
    cs:
    为DataGrid添加ItemDataBound事件
    private void DataGrid_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
    {
    if(e.Item.ItemType==ListItemType.EditItem)
    {
    DataSet myDs=SqlHelper.ExecuteDataset(MyGet.GetConnString(),CommandType.Text,"select * from TB_Role");
    DropDownList ddl=(DropDownList)e.Item.FindControl("DropDownList1");
    ddl.DataSource=myDs.Tables[0];
    ddl.DataTextField="RoleDesc";
    ddl.DataValueField="RoleValue";
    ddl.DataBind();
    ddl.SelectedValue=Convert.ToString(DataBinder.Eval(e.Item.DataItem,"RoleValue"));
    //ddl.Items.FindByValue(Convert.ToString(DataBinder.Eval(e.Item.DataItem,"RoleValue"))).Selected=true;//选择数据库内的作为默认
    }
    }
    这是我用过的例子
      

  8.   

    DropDownList dd= (DropDownList)e.Item.FindControl("dd");
                          dd.DataSource = GetData();dd.DataTextField = "Name";
    dd.DataValueField = "ID";dd.DataBind();
      

  9.   

    如果每个DropDownList绑定的数据源是一样的话,在ItemCreated也可以