获取System.Data.DataRowView同时从ComboBox获取值
本文关键字:获取 ComboBox System Data DataRowView | 更新日期: 2023-09-27 18:16:30
我试图根据ComboBox
中选择的项目从数据库获取数据,但当我试图访问所选的ComboBox
项目时,它给了我"System.Data "。DataRowView"……?)
我做了同样的事情与一个简单的选择查询在另一个函数,这工作得很好,但我不知道为什么它不工作在这个查询:
_dataAdapter.SelectCommand.CommandText = "SELECT lt.Name FROM Leader as lt LEFT JOIN Material as mt ON lt.Student_id=mt.lead_id where lt.Name=" + "'" + cmbLeader.SelectedItem.ToString() + "'";
谁能告诉我可能是什么问题?
SelectedItem
为绑定ComboBox
数据源的数据对象,本例中为DataRowView
。
您需要将SelectedItem
转换为DataRowView
,然后从中检索适当的值。
可以这样做:
DataRowView oDataRowView = cmbLeader.SelectedItem as DataRowView;
string sValue = "";
if (oDataRowView != null) {
sValue = oDataRowView.Row["YourFieldName"] as string;
}
然后替换(在你的CommandText中):
cmbLeader.SelectedItem.ToString()
:
sValue
这将优雅地处理DataRowView为null的情况。
上面代码中的 YourFieldName
应该是数据源中包含name值的字段的名称。如果您已经在组合框的DisplayMember
或ValueMember
属性中设置了此字段名称,那么您可以使用此属性来代替,以便在此字段更改或想要在其他地方重用此代码时节省一些麻烦:
sValue = oDataRowView.Row[cmbLeader.DisplayMember] as string;
也可以使用cmbLeader.SelectedValue
当您绑定到ADO DataTable
时,您实际上绑定到ADO DataView
(这是DataRowViews的集合)。这意味着SelectedItem
将始终是DataRowView
。
DataRow row = ((DataRowView)SelectedItem).Row
这用于下拉列表。许多开发人员希望从下拉列表中获取数据成员值,下面的函数将有助于以简单的方式获取值…如果有任何建议请在下面评论!
public string RadDropDownSelectValue(RadDropDownList radDropDownList)
{
string str = "";
foreach (RadListDataItem item in radDropDownList.SelectedItems)
{
DataRowView dv = (DataRowView)item.Value;
str = dv.Row[0].ToString();
}
return str;
}