C# WPF列表框SelectedItems
如何获取列表框中选定项的值 我试过这样的方法:C# WPF列表框SelectedItems,c#,wpf,visual-studio-2010,C#,Wpf,Visual Studio 2010,如何获取列表框中选定项的值 我试过这样的方法: foreach (var item in combo_course_op.SelectedItems) { string s = "select cid from tms_course where course_title = '" + item.ToString() + "'"; } 但它不起作用。它将字符串s显示为“从tms\u课程中选择c
foreach (var item in combo_course_op.SelectedItems)
{
string s = "select cid from tms_course where course_title = '" + item.ToString() + "'";
}
但它不起作用。它将字符串s显示为“从tms\u课程中选择cid,其中课程\u title='System.Data.DataRowView'”
我哪里做错了
以下是我绑定数据的方式:
MyCommand = new OdbcCommand("select distinct module_name from tms_class_schedule where class_date ='"+selectedDate+"'", DBConnect.MyConnection);
dap = new OdbcDataAdapter(MyCommand);
DS = new DataSet();
dap.SelectCommand = MyCommand;
dap.Fill(DS);
combo_course_op.DataContext = DS.Tables[0].DefaultView;
combo_course_op.DisplayMemberPath = DS.Tables[0].Columns["module_name"].ToString();
您可以将
项
转换为其实际类型:
foreach (var item in combo_course_op.SelectedItems)
{
string s = "select cid from tms_course where course_title = '" +
((Course)item).Title + "'";
}
或者重写Course.ToString
,使其返回标题
编辑(注意到数据行视图后
)
将DataRowViews放入WPF组合框看起来是一个非常糟糕的id。也许您应该阅读一两篇关于WPF和MVVM的教程。显然,您的列表框绑定到某个数据源。这意味着列表框中的项目不是字符串,而是
DataRowView
的实例。您可以按如下方式强制转换和获取底层数据对象:
DataRowView drv = (DataRowView)item;
<TheRealType> itemOfMyType = (<TheRealType>)drv.Row;
DataRowView drv=(DataRowView)项;
itemOfMyType=()drv.Row;
其中
是绑定到列表框的项目的实际数据类型。在代码中,DisplayMemberPath设置为列[“模块名称”]
foreach (var item in combo_course_op.SelectedItems)
{
string s = "select cid from tms_course where course_title = '"
+ (item["Title"] as string) + "'"; // if Title is column name. Otherwise replace "Title" with actual column header name
}
从这一点推断,以下几点应该有效:
foreach (var item in combo_course_op.SelectedItems)
{
string s = "select cid from tms_course where course_title = '" + item["module_name"].ToString() + "'";
}
所选项目是DataRow,因此您必须为要返回的值获取正确的列。实际上,将
DataRowView
放入WPF列表框是.NET framework在列表框为数据绑定时的默认行为;我编辑了这个问题,请检查您是如何收到物品的。(即combo\u course\u op.SelectedItems type)Hi tilak,我将listbox更改为listview。我认为我的数据绑定方法有一些错误。List moduleNames=新列表();而(MyReader.Read()){moduleNames.Add(MyReader.GetString(0));}combo_course_op.ItemsSource=moduleNames;现在你的方法很好…:)别无选择,无法发表评论。你们把模块名作为列,他用了标题…不确定这是否给你们带来了问题。只得到49分,所以无法回复并询问..Y?他在他的帖子里提到了什么是标题。无论如何谢谢你:祝你好运