当前位置:  开发笔记 > 编程语言 > 正文

从ComboBox获取值时获取System.Data.DataRowView

如何解决《从ComboBox获取值时获取System.Data.DataRowView》经验,为你挑选了1个好方法。

我正在尝试根据所选项目从数据库中获取数据,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() + "'";

谁能告诉我可能是什么问题?



1> competent_te..:

SelectedItem是绑定到ComboBox数据源的数据对象,在本例中是DataRowView.

您需要转换SelectedItemDataRowView,然后从中检索适当的值.

你可以这样做:

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值的字段的名称.如果您在组合框DisplayMemberValueMember属性中设置了此字段名称,那么您可以使用此属性,以便在此字段更改时或在您希望在其他位置重用此代码时为自己节省一些心痛:

   sValue = oDataRowView.Row[cmbLeader.DisplayMember] as string;

或者,您可以使用cmbLeader.SelectedValue.

推荐阅读
wurtjq
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有