2014-02-26 91 views
1

我有一個表,它填充名爲DropDownList_Tracking_Status的下拉列表。該表有3列; ID,TrackingName和Active。當我填充下拉列表時,我將每個記錄的Active =「Y」拉出來。具有不存在的SelectedValue的DropDownList

當我將數據讀入表單時,我試圖爲DropDownList_Tracking_Status預先選擇適當的值。如果當前狀態爲空(尚未選擇一個),則將其設置爲2.否則,我將其設置爲等於先前選擇的任何值。我遇到的問題是,如果當前的跟蹤狀態是一個自從被標記爲非活動狀態(Active設置爲「N」)的狀態,則會引發錯誤。很明顯,因爲它不能預先選擇下拉列表中不存在的值。

關於如何解決這個問題的任何想法?我當前的代碼塊看起來是這樣的:

if ((DT["TrackingStatus"].ToString() == "")) 
{ 
    DropDownList_Tracking_Status.SelectedValue = "2"; 
} 
else 
{ 
    DropDownList_Tracking_Status.SelectedValue = (DT["TrackingStatus"].ToString()); 
} 

編輯 我只是要補充一點填充下拉列表的表是包含Active視野中的一個。稱爲DT的SqlDataReader在其中沒有該字段。我想我可以創建一個查詢來加入這兩個並檢查Active的值,但我希望有一個更簡單的方法。東西說,(在僞代碼):

If DropDownList_Tracking_Status.SelectedValue = (DT["TrackingStatus"].ToString()); throws you an error, do this instead... 
+0

'DT'是一個'DataRow'?拋出什麼錯誤? –

+0

如果你的桌子只有2排?那麼它會拋出錯誤。 –

+0

爲什麼不在邏輯之前檢查當前的跟蹤狀態,如果它不存在於dropDown中,但需要添加它? – Srb1313711

回答

2

您可以將代碼放在try-catch塊中,

try 
{ 
DropDownList_Tracking_Status.SelectedValue = DT["TrackingStatus"].ToString(); 
} 
catch 
{ 
DropDownList_Tracking_Status.SelectedValue = "2"; 
} 

它將如果存在的話,否則它會通過異常值綁定,您可以在其中在ASIGN任何默認值catch塊。

+0

整潔的解決方案,讓+1 –

0

爲以下可能的(可能由檢查preceeded爲空記錄):

if ((DT["TrackingStatus"].ToString() == "")) 
{ 
    DropDownList_Tracking_Status.SelectedValue = "2"; 
} 
else if(DT["Active"] == "N") 
{ 
    DropDownList_Tracking_Status.SelectedValue = "2"; 
} 
else 
{ 
    DropDownList_Tracking_Status.SelectedValue = (DT["TrackingStatus"].ToString()); 
} 

UPDATE 加入活性場DT似乎是一個很好的解決方案,或者替代方法是查看下拉列表是否包含目標值。看到堆棧溢出問題here

+0

問題是活動字段位於包含所有可能的跟蹤狀態列表的表中。 DT是一個SqlDataReader。它讀取具有實際數據的表格,因此我不知道如何在不使用其他數據讀取器的情況下參考它。 –

相關問題