2011-11-12 18 views
0

私の割り当てに問題があります。私はこの中でデータを編集するときにGridViewのドロップダウンリストの値を設定しようとします。しかし私は友人に私の任務を送るとき、彼は間違いなく(それは彼がVisual Studio 2010を使用して)それを実行できると私に言った。私はVisual Studio 2008と2010を使用しますが、自分のコードを実行することはできません。私を助けてください。ドロップダウンリストの値を設定します

SqlConnection cn=new SqlConnection(System.Web.Configuration.WebConfigurationManager.ConnectionStrings["cn"].ToString()); 
protected void Page_Load(object sender, EventArgs e) 
{ 
    if (IsPostBack == false) 
    { 
     LoadProduct(); 
    } 
} 
public DataSet LoadCategory() 
{ 
    SqlDataAdapter da = new SqlDataAdapter("select * from categories", cn); 
    DataSet ds = new DataSet(); 
    da.Fill(ds); 
    return ds; 
} 
private void LoadProduct() 
{ 
    //throw new NotImplementedException(); 
    SqlDataAdapter da=new SqlDataAdapter("select * from products,categories where products.categoryID=categories.categoryID",cn); 
    DataTable db=new DataTable(); 
    da.Fill(db); 
    GridView1.DataSource=db; 
    GridView1.DataBind(); 
} 

protected void GridView1_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e) 
{ 
    GridView1.EditIndex = -1; 
    LoadProduct(); 
} 
protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e) 
{ 
    Literal ltr=GridView1.Rows[e.NewEditIndex].FindControl("Literal1") as Literal; 
    string categoryname = ltr.Text; 
    GridViewRow row=GridView1.Rows[e.NewEditIndex]; 
    LoadProduct(); 
    DropDownList ddl = row.Cells[3].Controls[1] as DropDownList; 
    ddl.DataSource = LoadCategory().Tables[0];// when I run there is a error. "Object reference not set to an instance of an object" 
    ddl.DataTextField = "categoryName"; 
    ddl.DataValueField = "categoryID"; 
    ddl.DataBind(); 
    ddl.Items.FindByText(categoryname).Selected = true;   
} 
+2

を試してみて、なぜあなたはそれを実行することはできませんか?私達に例外を与えてください。 – Amy

+1

課題は?この宿題ですか? – jwiscarson

答えて

0

あなたのDDLを見つける際にこのようにすることはできませんか?

DropDownList ddl = GridView1.Rows[e.NewEditIndex].FindControl("ddl") as DropDownList; 
ddl.DataSource = LoadCategory().Tables[0]; 
1

この

ddl.ClearSelection(); 
ddl.Items.FindByText(categoryname).Selected = true; 
関連する問題