2016年2月24日 星期三

Q&A:使用DataTable產生SelectList

 

Tool:Visual Studio 2015 Enterprise
OS:Windows 10
.NET Framework 4.6、ASP.NET MVC 5.2.3

Q:在MVC的專案中使用ADO.NET將資料庫查出來,放到DataTable,將DataTable中的值做為View的下拉式選單的資料。

A:要把資料提供給下拉式清單方塊做使用時,需要把資料包在SelectList物件之中,不過直接將DataTable丟到SelectList的建構函式之中並無法運作,這時可以這樣做:

public ActionResult Index( ) {
  SqlDataAdapter da = new
   SqlDataAdapter( "select * from stores" , connectionString );
  System.Data.DataTable dt = new System.Data.DataTable( );
  da.Fill( dt );
  ViewBag.ddl = new SelectList( dt.AsDataView( ) , "stor_id" , "stor_name" );
  return View( dt );
}

上述程式碼查詢Pubs資料庫的stores資料表當做下拉式清單的資料來源,範例中叫用DataTable的AsDataView方法,將DataTable轉換成DataView物件,傳入SelectList建構函式第一個參數,SelectList建構函式第二個參數指定stor_id欄位將做為Value;SelectList建構函式第三個參數指定stor_id欄位將做為Text (下拉式清單方塊顯示的文字)

然後在View之中,使用HtmlHelper產生清單:

@Html.DropDownList( "ddl" )

View的執行結果參考如下:

image

沒有留言:

總網頁瀏覽量