从适配器中检索特定项目?
Retrieve a specific item from an adapter?
我在 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 语句。但是,我不知道如何获得该值。
我的意思是,我可以单独调用数据并使用 reader,但这不是最有效的方法。
我希望我能正确理解问题,但是您想根据从组合框中选择的角色更改字段并且不知道如何获取 [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] 是否为 Null 或您想要的 0。如果它不是 Null 或 0,则取值并将其保存为 string labelText
。否则你可以设置一个替代文本,比如 "Empty Field" 或者只是 "";
我假设您在 ComboBox
上有一个 Listener
来检查值何时更改,或者有一个 "Commit Button" 或其他一些方法来检索所选的 Role 值。只需将代码添加到您的 method/listener 以获得所需的值并将其设置为标签的文本。
编辑:也许这更符合您的要求,因为您不需要在数据表上使用 Select()
:
DataRowView selectedRow = (ddlRole.SelectedItem as DataRowView);
要从行中检索值,您可以使用:selectedRow["BILLABLE_LBL"]
现在您可以检查 Null 和 0,一切顺利。
我不知道哪个更有效(Select 或 ... 作为 DataRowView),但无论哪种方式你都能得到你的价值。
(.SelectedItem as DataRowView
到 的功劳)
我在 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 语句。但是,我不知道如何获得该值。
我的意思是,我可以单独调用数据并使用 reader,但这不是最有效的方法。
我希望我能正确理解问题,但是您想根据从组合框中选择的角色更改字段并且不知道如何获取 [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] 是否为 Null 或您想要的 0。如果它不是 Null 或 0,则取值并将其保存为 string labelText
。否则你可以设置一个替代文本,比如 "Empty Field" 或者只是 "";
我假设您在 ComboBox
上有一个 Listener
来检查值何时更改,或者有一个 "Commit Button" 或其他一些方法来检索所选的 Role 值。只需将代码添加到您的 method/listener 以获得所需的值并将其设置为标签的文本。
编辑:也许这更符合您的要求,因为您不需要在数据表上使用 Select()
:
DataRowView selectedRow = (ddlRole.SelectedItem as DataRowView);
要从行中检索值,您可以使用:selectedRow["BILLABLE_LBL"]
现在您可以检查 Null 和 0,一切顺利。
我不知道哪个更有效(Select 或 ... 作为 DataRowView),但无论哪种方式你都能得到你的价值。
(.SelectedItem as DataRowView
到 的功劳)