我想在编辑DataGrid时,使<EditItemTemplate>中的DropDownList实现动态绑定
可现在我无法在EditCommand事件中无法得到DropDownList请问如何实现这种动态绑定

解决方案 »

  1.   

    private void DataGrid1_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
      {
       SqlConnection conn=new SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["conn"]);
       SqlDataAdapter da=new SqlDataAdapter("select * from dep",conn);
       DataSet ds=new DataSet();
       da.Fill(ds,"table1");
       if(e.Item.ItemType==ListItemType.EditItem)
       {
        DropDownList ddl=(DropDownList)e.Item.FindControl("dep");
        ddl.DataSource=ds.Tables["table1"];
        ddl.DataTextField="depname";
        ddl.DataValueField="depid";
        ddl.DataBind();
        ddl.Items.FindByValue(Convert.ToString(DataBinder.Eval(e.Item.DataItem,"depid"))).Selected=true;//选择数据库内的作为默认
       }
      }
      

  2.   

    首先注册 DataGrid的OnItemCommand="MyDataGrid_ItemCommand"

    public void ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
    {
    if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)

    string strItemID;
    SqlConnection MyConnection = cn;
    SqlCommand cmdSelect;
    SqlDataReader dtrAuthor; strItemID=Convert.ToString(e.Item.Cells[0].Text);
    cn2.ConnectionString = (@"Server=(local);uid=yourid;pwd=yourpassword;database=Killua") ;
    cn2.Open();
    cmdSelect=new SqlCommand("select 作者姓名 FROM (论文信息 inner join 论文发表 ON 论文信息.序列号 = 论文发表.序列号) inner join 作者信息 ON 作者信息.学号 = 论文发表.学号 where 论文信息.序列号=@strItemID",cn2);
    cmdSelect.Parameters.Add("@strItemID" , strItemID);
    dtrAuthor=cmdSelect.ExecuteReader();
    DropDownList drop=(DropDownList)e.Item.FindControl("dropAuthor");
    drop.DataSource=dtrAuthor;
    drop.DataTextField="作者姓名";
    drop.DataBind();
    dtrAuthor.Close();
    cn2.Close();
    }
             }由于时间关系,采用了一下我以前做过的东西,懒得修改了,自己慢慢看慢慢改
      

  3.   

    首先你要取得编辑后的DropDownList
    DataGrid1_EditCommand事件中加入以下代码: DataGrid1.EditItemIndex = e.Item.ItemIndex '这里是你的重新绑定DataGrid过程
     '*************** '取得编辑后的DropDownList
      Dim MyDDL As DropDownList = CType(DataGrid1.Items(e.Item.ItemIndex).Cells(3).Controls(1), DropDownList)  '下面就是为取得的DropDownList绑定值了
       '取数据,并返回一个dt(过程省略)
       MyDDL.DataSource = dt
       MyDDL.DataTextField = "Text"
       MyDDL.DataValueField = "Value"
       MyDDL.DataBind()OK
      

  4.   

    对了,还有注册的列,顺便也给了
    <asp:TemplateColumn HeaderStyle-Width="60px" HeaderText="作者">
    <ItemTemplate>
    <asp:DropDownList Width="56px" ID="dropAuthor" Runat="server"></asp:DropDownList>
    </ItemTemplate>
    </asp:TemplateColumn>