2016-11-16 12 views
1

にSQLデータベースの値を設定するには、次のコードLoadRegistrations();があります。ドロップダウンリストをメソッドに渡す

このメソッドをコピーしてマイナーな細部を変更するのではなく、別の場所でこれを何回か使用する可能性が高いので、世話をするメソッドを作成したいと考えています。

私は限りDataTableを埋めるように持っているが、私はそれにDataTextField + DataValueFieldDropDownList &を渡すと、データバインディングについては移動するかどうかはわかりません。私は

オリジナルメソッド

private void LoadRegistrations() 
    { 
     DataTable reg = new DataTable(); 
     using (SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnString1"].ToString())) 
     { 
      try 
      { 
       SqlDataAdapter adapter = new SqlDataAdapter("select vehicleID, regNo from dbo.Vehicles order by regNo Asc", con); 
       adapter.Fill(reg); 
       ddreg.DataSource = reg; 
       ddreg.DataTextField = "regNo"; 
       ddreg.DataValueField = "vehicleID"; 
       ddreg.DataBind(); 
      } 
      catch (Exception ex) 
      { 
       // Error handling to be done 
      } 

     } 
    } 

新しい方法

private DataTable PopulateDropdown(string connectionString, DataTable datatable, string query) 
{ 
    DataTable dt = new DataTable(); 
    using (SqlConnection con = new SqlConnection(connectionString)) 
    { 
     try 
     { 
      SqlDataAdapter adapter = new SqlDataAdapter(query, con); 
      adapter.Fill(dt); 
      //What do I do here? I want to bind to a dropdown list passed into this method 
     } 
     catch (Exception ex) { } 
    } 
     return dt; 
} 

ASPドロップダウンあなたが持つメソッドを作成しました

<asp:DropDownList ID="ddreg" CssClass="form-control" runat="server" AppendDataBoundItems="true"> 
      <asp:ListItem Text="<Select Registration Number>" Value="0" /> 
     </asp:DropDownList> 
+1

メソッドパラメータとして 'DropDownList'を追加しましたか? – David

+0

これを試してみたら、 'タイプの名前空間が見つかりません'というエラーが出ます。それは、マスターページの子のためのコードビハインドですが、必要なアセンブリが不足しているかどうかはわかりませんが、同じスクリプト内で、最初のメソッドでドロップダウンリストオブジェクトを利用することは問題ありません。 –

答えて

1

を生成するために何をすべきか教えてくださいパラメータ:

private DataTable PopulateDropdown(string connectionString, DataTable datatable, string query) 

あなたは既にやる正確に何をすべきか、その方法にDropDownListを渡すと、パラメータを追加したい場合は、次の方法に続いて

private DataTable PopulateDropdown(string connectionString, DataTable datatable, string query, DropDownList myDropDownList) 

をあなたはmyDropDownListを参照することができます。

myDropDownList.DataSource = dt; 
myDropDownList.DataBind(); 

メソッドを呼び出すときは、変更するDropDownListを渡します。

PopulateDropDown(someConnectionString, someDataTableYouDoNotUse, someQuery, ddreg); 
+0

これは私の後でした。ありがとうございました:)私は 'System.Web.UI.WebControls'も参照しなければなりませんでしたが、現在は私が望んでいたように動作します。 –

0
private DataTable PopulateDropdown(string connectionString, DataTable datatable, string query, System.Web.UI.WebControls.DropDownList yourDropdownList) 
    {  
     SqlDataAdapter adapter = new SqlDataAdapter(query, con); 
     adapter.Fill(dt); 
     yourDropdownList.DataSource = dt; 
     yourDropdownList.DataBind(); 
     return dt; 

    } 
+0

私は実際に 'PopulateDropdown(connectionString、DataTable、query、yourDropdownList、textField、valueField);のようなものを呼び出すだけのときに、私のPage_Loadメソッドで繰り返されることになります; –

関連する問題