【问题标题】:Retrieve a specific item from an adapter?从适配器中检索特定项目?
【发布时间】:2015-12-14 13:55:45
【问题描述】:

我在 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 语句。但是,我不知道如何获得该值。

我的意思是,我可以单独调用数据并使用阅读器,但这不是最有效的方法。

【问题讨论】:

  • 但是您有多行具有 [BILLABLE_LBL] 对吗?您要为组合框中的每个项目都添加该标签吗?

标签: c# asp.net code-behind


【解决方案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] 是否为 Null 或 0,如您所愿。如果不是 Null 或 0,则取值并保存为string labelText。否则,您可以设置替代文本,例如“空字段”或只是“”;

我假设您的ComboBox 上有一个Listener 来检查值何时更改,或者有一个“提交按钮”或其他检索选定角色值的方法。只需将代码添加到您的方法/侦听器即可获得所需的值并将其设置为标签的文本。


编辑:也许这更符合您的要求,因为您不需要在数据表上使用 Select()

DataRowView selectedRow = (ddlRole.SelectedItem as DataRowView);

要从行中检索值,您可以使用:selectedRow["BILLABLE_LBL"] 现在您可以检查 Null 和 0 了,一切顺利。 我不知道哪个更有效(Select 或 ... as DataRowView),但无论哪种方式,你都会得到你的价值。

.SelectedItem as DataRowViewhttps://stackoverflow.com/a/9825085/5332988 的信用)

【讨论】:

  • 这非常有效。谢谢!我仍然有点 n00b,但感谢这个网站,我学到了很多东西。
猜你喜欢
  • 1970-01-01
  • 2014-05-11
  • 2011-11-04
  • 2012-11-06
  • 2011-10-14
  • 2020-03-14
  • 1970-01-01
  • 1970-01-01
  • 2011-09-14
相关资源
最近更新 更多