2016-11-16 78 views
1

我使用以下代碼LoadRegistrations();來使用來自SQL數據庫的值填充DropDownList將下拉列表傳遞到方法

我可能會在不同的地方使用這幾次,所以想編寫一個方法來照顧它,而不是複製這種方法和改變小細節。

我儘量填充DataTable了,但我不知道如何去傳遞一個DropDownList &的DataTextField + DataValueField到它和數據綁定。請解釋什麼,我要做的

原始方法

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);' –

相關問題