把 e.Row.RowState== DataControlRowState.Edit改为(e.Row.RowState & DataControlRowState.Edit)!=0就行。
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if ((e.Row.RowType == DataControlRowType.Separator||e.Row.RowType == DataControlRowType.DataRow) && (e.Row.RowState & DataControlRowState.Edit)!=0)
{
DropDownList ddl= (DropDownList)e.Row.FindControl("DropDownList1");
SqlConnection cn = conn.CreateConnection();
cn.Open();
SqlCommand cm = new SqlCommand("select [SID],[DataName] from [DataSecond]", cn);
SqlDataAdapter sda = new SqlDataAdapter();
sda.SelectCommand = cm;
DataSet ds = new DataSet();
sda.Fill(ds);
ddl.DataSource = ds;
ddl.DataTextField = "DataName";
ddl.DataValueField = "SID";
ddl.DataBind();
string dfID = GridView1.DataKeys[e.Row.RowIndex].Value.ToString();
SqlCommand cmm = new SqlCommand("select [SID] from [DataFiles] where [DFID]=" + dfID, cn);
string sid = Convert.ToString(cmm.ExecuteScalar());
cn.Close();
cn.Dispose();
ddl.SelectedValue = sid;
}
}