2015-12-14 36 views
0

我有在C#代碼隱藏的代碼塊填充組合框:從適配器中檢索特定項目?

ddlRole.Items.Clear(); 
ddlRole.SelectedValue = null; 
DataTable DDLRoles = new DataTable(); 
using (SqlConnection con2 = new SqlConnection(ConfigurationManager.ConnectionStrings["CLTDPL"].ConnectionString)) 
{ 
    //SqlDataAdapter adapter = new SqlDataAdapter("Select [Role_ID], [Role] from [MOS_Role] where [Function_ID] = " + FunID + " ORDER BY [Role] ASC", con2); 
    SqlDataAdapter adapter = new SqlDataAdapter("Select [Role_ID], [Role], [BILLABLE_LBL] from [MOS_Role] where [Function_ID] = @FunID ORDER BY [Role] ASC", con2); 
    adapter.SelectCommand.Parameters.AddWithValue("@FunID", Convert.ToInt32(ddlFunction.SelectedValue)); 
    adapter.Fill(DDLRoles); 
    ddlRole.DataSource = DDLRoles; 
    ddlRole.DataTextField = "Role"; 
    ddlRole.DataValueField = "Role_ID"; 
    ddlRole.DataBind(); 

} 
ddlRole.Items.Insert(0, new ListItem("Select your role", "0")); 

現在我被要求更改基於現場[BILLABLE_LBL]標籤。所以,我需要檢查該字段是否爲NULL或0,並根據該語句編寫If/Else語句。但是,我無法弄清楚如何獲得這個價值。

我的意思是,我可以單獨調用數據並使用閱讀器,但這不可能是最有效的方法。

+0

但你必須多行有[BILLABLE_LBL]吧?你打算把這個標籤放在組合框中的每個項目上嗎? – mecek

回答

1

我希望我能正確理解這個問題,但是您想根據組合框中選定的角色更改字段,但不知道如何獲取[BILLABLE_LBL]值(請隨時糾正我)。

您可以通過Select()方法從DataTable中獲得DataRow

DataRow[] row = DDLRole.Select("Role_ID = '" + selectedValueFromCombobox + "'"); 

現在,你有你的匹配DataRow可以讀出所需的值:

string labelText = (row[0]["BILLABLE_LBL"] != DBNull.Value && row[0]["BILLABLE_LBL"] != 0) ? (string)row[0]["BILLABLE_LBL"] : "Empty Field"; 

此調用檢查,如果[BILLABLE_LBL]爲空或0喜歡你想要的。如果它不是零或0,則取值並將其保存爲string labelText。否則,您可以設置替代文字,如「空字段」或只是「」;

我假設您的ComboBox上有一個Listener來檢查該值何時更改,或者是「提交按鈕」或其他您檢索所選角色值的其他方法。只需將代碼添加到您的方法/偵聽器即可獲得您想要的值並將其設置爲標籤的文本。


編輯:也許這更是你要找的,因爲你不需要對數據表使用Select()

DataRowView selectedRow = (ddlRole.SelectedItem as DataRowView); 

從行中檢索值你可以使用:selectedRow["BILLABLE_LBL"] 現在你可以做你的支票零和0,你很好去。 我不知道哪一個更有效率(選擇或...作爲DataRowView),但以任何方式獲得您的價值。

(信用爲.SelectedItem as DataRowViewhttps://stackoverflow.com/a/9825085/5332988

+0

這工作完美。謝謝!我仍然是一個n00b,但感謝這個網站,我學到了很多東西。 –

相關問題