我在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 :(得分:1)
我希望我能正确理解这个问题,但你想根据组合框中的选定角色更改字段,不知道如何获取[BILLABLE_LBL]值(随意纠正我)。
您可以通过DataRow
方法从DataTable
获取Select()
。
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]是否为Null或0,如您所愿。如果它不是Null或0,则取值并将其保存为string labelText
。否则,您可以设置替代文本,例如“Empty Field”或只是“”;
我假设您Listener
上有ComboBox
来检查值何时发生变化,或者“提交按钮”或您检索所选角色值的其他方法。只需将代码添加到方法/侦听器中即可获得所需的值,并将其设置为标签的文本。
编辑:也许这更像是您所寻找的,因为您不需要在数据表上使用Select()
:
DataRowView selectedRow = (ddlRole.SelectedItem as DataRowView);
要从您可以使用的行中检索值:selectedRow["BILLABLE_LBL"]
现在你可以检查Null和0,你很高兴。
我不知道哪一个更有效(选择或......作为DataRowView),但无论哪种方式,你都可以获得你的价值。
(.SelectedItem as DataRowView
至https://stackoverflow.com/a/9825085/5332988)