2017-07-13 3 views
1

埋め込みデータセットでコントロールがバインドされた後、ドロップダウンリストコントロールから値を取得するにはどうすればよいですか?具体的には、このコントロールはフッターテンプレート内にあり、ユーザーが新しい行を追加しようとすると、選択した項目を取得する必要があります。問題は、 "新規追加"をクリックしたときにドロップダウンリストに値が入力された後です。値は常にnullを返します。コントロールが埋め込まれたデータセットにバインドされた後に、ドロップダウンリストコントロールから値を取得するにはどうすればよいですか?

ROWコマンド機能:

protected void userView_RowCommand(object sender, GridViewCommandEventArgs e) 
{ 
    DropDownList addUserRole = (DropDownList)userView.FooterRow.FindControl("editUserRole"); 
    string sqlCommandText = "INSERT INTO Users(USERNAME, PHONE, EMAIL, ROLEIDFK, DEPTIDFK, ACTIVE) VALUES(@username, @phone, @email, @roleidfk, @deptidfk, @active)"; 
    scmd.Parameters.AddWithValue("@roleidfk", addUserRole.SelectedValue.ToString()); // >>>> Returns "AddUserRole was null" 
} 

ドロップダウンデータバインディング: - 少なくとも、それは違い

private DataTable GetData (string query) 
    { 
     var connection = sqlConnect.connect(); 

     DataTable dt = new DataTable(); 

     using (SqlConnection con = new SqlConnection(connection.ConnectionString)) 
     { 
      con.Open(); 
      using(SqlCommand cmd = new SqlCommand(query, con)) 
      { 
       SqlDataAdapter adapter = new SqlDataAdapter(cmd); 
       adapter.Fill(dt); 
      } 
     } 
     return dt; 

    protected void userView_RowDataBound(object sender, GridViewRowEventArgs e) 
    { 
     if (e.Row.RowType == DataControlRowType.DataRow) 
     { 

     } 

     if (e.Row.RowType == DataControlRowType.Footer) 
     { 

      DropDownList ddlUser = (e.Row.FindControl("ddlRoles") as DropDownList); 
      //query.addDataSetDdl(roles, "DESCRIPTION", "ROLEID", ddlUser); 

      ddlUser.DataSource = GetData("SELECT * FROM Roles"); 

      ddlUser.DataTextField = "DESCRIPTION"; 
      ddlUser.DataValueField = "ROLEID"; 
      ddlUser.DataBind(); 

     } 

答えて

1

問題はFindControl呼び出しがdropdpwnlistの正しいIDを使用していないということですドロップダウンリストをデータバインディングするときに使用するものから:

DropDownList addUserRole = (DropDownList)userView.FooterRow.FindControl("editUserRole") 

FindControl

DropDownList ddlUser = (e.Row.FindControl("ddlRoles") as DropDownList); 

対リターン nullあなたが正しいIDを使用する場合、問題が解決されなければならないように制御が、見つからない場合。

関連する問題