我有一個SQL表中的值的列表,這些值用來派生DropDownList,它具有一個唯一的Integer作爲每個項目的值以及一個String作爲可見文本(通過SqlDataSource)。數據庫中還有第三個字段,它是一個標誌,用於指示列表項是否處於活動狀態(非活動項目未顯示在DropDownList中)ASP.NET DropDownList - 如何處理缺失值?
在下拉列表中進行的選擇作爲整數存儲在數據庫中值(作爲組成整個記錄的數據集的一部分),而不是文本值。
隨着時間的推移,DropDownList中的項目可能會通過將項目標記爲不活動來刪除。但是,仍然需要打開舊記錄,這些記錄可能包含一個非現用項目作爲其數據的一部分...
我的問題是,確保下拉列表中包含缺失值的最佳方法是什麼爲舊紀錄?
映入腦海的兩個方法,其一是:
填充的DropDownList只有當前活動的項目,並裝載記錄,當應用程序試圖選擇一個不存在的值時捕捉,去回到數據庫看看它應該是什麼(文本值),並手動將其添加到下拉菜單中。
或...
填充DropDownList的所有列表項(有效和無效),加載的記錄,然後編程刪除所有不活動的項目(execpt對於任何正在選擇)。
這些都不是特別有效,所以我想知道這種事情是否有最佳做法?
我使用的有效/無效標誌的原因是,(只是舉例)上週我下拉菜單包括「貓」,「狗」和「魚」,記錄可以用這些選項保存,但從本週開始我不再銷售「魚」,所以我將其標記爲不活動,以便它不出現在下拉列表,但我仍然需要能夠引用它爲我的舊數據(因此保持外鍵關係)。 在我的頁面中,DropDownLists是在記錄加載之前的數據綁定,所以我認爲這可能是我要出錯的地方? – triplestones
只是一個想法,據推測任何有Fish的外鍵的記錄都是舊數據(即遺留),所以你不會真的想對它做任何改變?那麼,爲什麼不只是把選定的價值回來?無論哪種方式,如果你想使其效率,我會開始綁定記錄加載後的下拉菜單。 –