我不太有把握,不清楚怎麼形容這個問題。
有一個網友發問了這個問題----
他在 FormView與 DetailsView裡面要新增資料,
但預設都是 TextBox控制項,
他打算把幾個欄位做成 DropDownList,直接從資料表裡面抓資料,避免使用者自己輸入文字,而造成錯誤。
但發現了一些問題
我不太有把握,不清楚怎麼形容這個問題。
有一個網友發問了這個問題----
他在 FormView與 DetailsView裡面要新增資料,
但預設都是 TextBox控制項,
他打算把幾個欄位做成 DropDownList,直接從資料表裡面抓資料,避免使用者自己輸入文字,而造成錯誤。
但發現了一些問題:
我用 Northwind資料庫的 Order資料表來解說好了。
我要新增一筆訂單,客戶資料、員工編號、船運公司這些資料,不能放任 User自由輸入文字(很容易輸入錯誤)
必須從相關的資料表去撈取資料。
於是他在 新增資料的樣版(InsertItemTemplate)裡面,
把這三個欄位改成 DropDownList並且搭配SqlDataSource
從其他資料表抓取資料。
然後,他想要採用我這個方法 -- ADO.NET #5,自己設定畫面,讓SqlDataSource幫我們撈(呈現)資料 ...
讓 SqlDataSource幫他完成資料新增,可以少寫一點程式。
問題來了,
他在 Insert的指令裡面,發現自己修改的三個欄位(改用 DropDownList搭配 相關資料表)
卻無法點選......請看下圖。
=================================================================================
這情況的確很難形容,所以雞同鴨講了半天。
我只能說:「不要過份地依賴開發工具那些精靈」
- 做得到,是我們賺到。算他厲害!
- 做不到也是應該的。 工具做不到,大不了自己寫程式來解決,有什麼好大驚小怪的?
如果工具提供的精靈都能做到,那麼會寫程式的人,可能跟會用 Word的人,都是一樣的薪資。
(只是打比喻。 我 "不是"看不起 Word這套軟體,我知道它功能很強,80%的功能或許我自己也不善用)
===========================================================================
我自己的解決方法有兩種:
第一,既然要自己設計「資料新增」的畫面,那幹嘛還用現成的 FormView與 DetailsView呢?
沒事搞一些「混搭」、「混用」,往往會有更多怪異情況。
以我這個例子來說(ADO.NET #5,自己設定畫面,讓SqlDataSource幫我們撈(呈現)資料 ...)
畫面上全都是用最基礎的控制項來做, TextBox / Button /DropDownList.... 問題就解了。
第二,要堅持這名網友原本的作法(上面的「混搭」作法)也行。
但要學會 FindControl()方法,然後自己寫後置程式碼來做。請看下面文章的說明:
[習題]GridView裡面,樣版(Template)內的控制項,怎麼抓取?使用FindControl就對啦~
既然您堅持要用 FormView,那麼各樣版裡面的「子控制項」,您就要有能力去抓住他。
抓住他以後,就能控制他。 程式請自己參考,都是重複的。
當你抓到 FormView裡面的某一個「DropDownList控制項以後」
Dim myCustomerID As DropDownList = FormView1.FindControl("DropDownList1_CustomerID")
你就能使用它的屬性啦!很簡單!
SqlDataSource1.InsertParameters.Add("CustomerID", myCustomerID.SelectedValue)

02

03

04

05

06

07

08

09

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

或許我要自己寫程式來解,不是好方法。
說不定真的有更好的方法,可以拖拉一下,從設定上著手就能搞定。
但我還是建議:寫程式還是要多依賴 "鍵盤" 打字、思考。
只會用 "滑鼠" 拖拉現成的控制項,那只是騙騙初學者入門而已。
一般人可以這樣學,
但要靠"寫程式過生活"的話,別想依賴這一招過一輩子。
我將思想傳授他人, 他人之所得,亦無損於我之所有;
猶如一人以我的燭火點燭,光亮與他同在,我卻不因此身處黑暗。----Thomas Jefferson
線上課程教學,遠距教學 (Web Form 約 51hr) https://dotblogs.com.tw/mis2000lab/2016/02/01/aspnet_online_learning_distance_education_VS2015
線上課程教學,遠距教學 (ASP.NET MVC 約 140hr) https://dotblogs.com.tw/mis2000lab/2018/08/14/ASPnet_MVC_Online_Learning_MIS2000Lab
寫信給我,不要私訊 -- mis2000lab (at) yahoo.com.tw 或 school (at) mis2000lab.net
(1) 第一天 ASP.NET MVC5 完整影片(5.5小時 / .NET 4.x版)免費試聽。影片 https://youtu.be/9spaHik87-A
(2) 第一天 ASP.NET Core MVC 完整影片(3小時 / .NET Core 6.0~8.0)免費試聽。影片 https://youtu.be/TSmwpT-Bx4I
[學員感言] mis2000lab課程評價 - ASP.NET MVC , WebForm 。 https://mis2000lab.medium.com/%E5%AD%B8%E5%93%A1%E6%84%9F%E8%A8%80-mis2000lab%E8%AA%B2%E7%A8%8B%E8%A9%95%E5%83%B9-asp-net-mvc-webform-77903ce9680b
ASP.NET遠距教學、線上課程(Web Form + MVC)。 第一天課程, "完整" 試聽。
......... facebook社團 https://www.facebook.com/mis2000lab ......................
......... YouTube (ASP.NET) 線上教學影片 https://www.youtube.com/channel/UC6IPPf6tvsNG8zX3u1LddvA/
Blog文章 "附的範例" 無法下載,請看 https://dotblogs.com.tw/mis2000lab/2016/03/14/2008_2015_mis2000lab_sample_download
請看我們的「售後服務」範圍(嚴格認定)。
......................................................................................................................................................
ASP.NET MVC => .NET Core MVC 線上教學 ...... 第一天課程 完整內容 "免費"讓您評估 / 試聽

[遠距教學、教學影片] ASP.NET (Web Form) 課程 上線了!MIS2000Lab.主講 事先錄好的影片,並非上課側錄! 觀看時,有如「一對一」面對面講課。
