protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (((DropDownList)e.Row.FindControl("ddlPower")) != null)
        {
            DropDownList ddlpower = (DropDownList)e.Row.FindControl("ddlPower");            //  生成 DropDownList 的值,绑定数据
            string connStr = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;            
            DataSet ds = new DataSet();
            SqlConnection conn = new SqlConnection(connStr);
            if (conn.State.ToString() == "Closed") conn.Open();
            SqlDataAdapter da = new SqlDataAdapter("Proc_PowerList", conn);
            da.Fill(ds);
            if (conn.State.ToString() == "Open") conn.Close();            ddlpower.DataSource = ds.Tables[0].DefaultView;
            ddlpower.DataTextField = "Name";
            ddlpower.DataValueField = "ID";
            ddlpower.DataBind();            
            ddlpower.SelectedItem.Text = ((HiddenField)e.Row.FindControl("hdfPower")).Value;            
        }    }以上是GridView的 rowdatabound事件  
我不懂的是
1:rowdatabound事件 是做什么的,有什么用?
2:if (((DropDownList)e.Row.FindControl("ddlPower")) != null)
   这句判断是什么意思?
3:e.Row.FindControl 的用法

解决方案 »

  1.   

    1,rowdatabound事件 gridview里显示的数据是怎么出来的  就是这个事件一行一行写出来的
    你跟踪一下就知道了
    2,e.Row  因为每执行一次是一行  所以  e.Row是当前行的意思  ,  findcontrol是找控件的方法,但是是CONTROL类型的 把它强制转换成正确的类型  ,然后才能使用该类型的方法  比如.TEXT 
    3.findcontrol 是一个方法  e.Row只不过是确定什么对象调用的这个方法。
    我说的已经很幼稚了  不知道楼主能看懂么
      

  2.   

    1.每行数据绑定时激发
    2.当ddlPower控件可以找到时
    3.MSDN
      

  3.   

    谢谢 yangjia21_2007()  你讲的我听懂了~