[ASP.NET] GridView CRUD - 如何修改被轉為顯示值的ID

前言:
上一篇提到怎樣把原本在資料庫的foreign ID在presentation layer中轉為給人看的值. 這一次談一下小弟的經驗, 利用GridView去修改已經轉為顯示值的foreign ID.

例如現在需要像下圖一樣把ID為2的那筆資料的CategoryName從糖水鋪轉為其他

我需要提供可供選擇的DropDownList

方法:
  1. 先把CategoryName轉成TemplateField. 在Gridview上按一下SmartTag, 選取Edit Columns. 在Selected fields中選取CategoryName, 然後在右邊選"Convert this field into a TemplateField". 然後按OK.
  2. 再次在Gridview中按一下SmartTag, 選擇"Edit Template", 然後在Smart Tag中選擇CategoryName的EditItemTemplate. 把原來的TextBox刪除, 然後拉一個DropdownList, 一個ObjectDatasource進去.
  3. 先設定ObjectDatasourceCompanyType. 按一下smart tag, 然後選"Configure Data Source", 然後選取放置文字的資料表, 像我這裡在COMPANY_TYPE, 選好以後按finish.
  4. 把DropDownList連結到ObjectDataSourceCompanyType. 按一下DropDownList-> smartTag -> Choose Data Souce. 把要顯示值還有data field設好. 按OK.
  5. 把DropDownList綁定GridView上的Category ID, 即是告訴系統說我這個DropDownList的值其實就是Category ID. 在DropDowdList中-> SmartTag->Edit Databindings
  6. 在"Bindable properties"中選取"SelectedValue", 在右邊Bound to選取儲存Category ID的欄位"CATEGORY", 勾選"Two-way databinding", 然後按OK.
  7. 最後, 把儲存category ID的欄位隱藏起來, 不然就會出現foreign ID跟顯示的值一起出現....像這樣.

    按一下GridView->SmartTag->Edit Columns, 找到foreign ID的欄位, 把Visible設為False. 為什麼不直接把這欄位刪掉? 小弟試過這樣DropDownList就無法跟foreign key的欄位做連結了.
  8. 這樣就搞定了!!!


Popular posts from this blog

[SQL SERVER] 找出LOCK方法懶人包

[SQL Server] 解決log檔(ldf file)過度膨脹的實戰經驗

[開箱] Dell P2415Q 4K螢幕開箱