C# 从组合框中选择数据,并在列表框c中向其显示信息
我遇到了一些问题,当用户在组合框中选择所选名称时,与所选名称链接的数据将显示在列表框中。我很难理解这种方法。错误就在这里C# 从组合框中选择数据,并在列表框c中向其显示信息,c#,linq,combobox,listbox,C#,Linq,Combobox,Listbox,我遇到了一些问题,当用户在组合框中选择所选名称时,与所选名称链接的数据将显示在列表框中。我很难理解这种方法。错误就在这里 int selectLocStation = Convert.ToInt32(cbLocStation.SelectedValue); 错误:无法将类型为“f_AnonymousType2”2[System.String.System.Int32]的对象强制转换为类型为“System.IConvertible” private void cbLocStation_Selec
int selectLocStation = Convert.ToInt32(cbLocStation.SelectedValue);
错误:无法将类型为“f_AnonymousType2”2[System.String.System.Int32]的对象强制转换为类型为“System.IConvertible”
private void cbLocStation_SelectedIndexChanged(object sender, EventArgs e)
{
using (satsEntities Setupctx = new satsEntities())
{
int selectLocStation = Convert.ToInt32(cbLocStation.SelectedValue);
var query = (from db in Setupctx.requiredtimings
join timing t in Setupctx.timings on db.RequiredTimingID equals t.TimingID
where db.RequiredLocationStationID == selectLocStation
select new
{
t.Time2
}).ToList();
List<TimeSpan> lstSelectedTime = new List<TimeSpan>();
foreach (var a in query)
{
lstSelectedTime.Add((TimeSpan)a.Time2);
}
lstTime.DataSource = lstSelectedTime;
}
}
任何帮助都将不胜感激。如果可以使用to string,我将尝试此方法
int selectLocStation = Convert.ToInt32(cbLocStation.SelectedValue.ToString());
DataRowView drow = (DataRowView)cbLocStation.SelectedItem;
string str = drow.Row.ItemArray[0].ToString();
还是这个
int selectLocStation =Int32.Parse(cbLocStation.SelectedValue.ToString());
你也可以试试这个
int selectLocStation = Convert.ToInt32(cbLocStation.SelectedValue.ToString());
DataRowView drow = (DataRowView)cbLocStation.SelectedItem;
string str = drow.Row.ItemArray[0].ToString();
检查字符串是否有数字,并将其转换为int
您还可以添加数据绑定
BindingContext oBC = new BindingContext();
cbLocStation.BindingContext = oBC;
cbLocStation.DataBindings.Add(new Binding("SelectedValue", DeleteRT, "RequiredLocationStationID", false, DataSourceUpdateMode.OnPropertyChanged));
您正在尝试将匿名类型从查询转换为timespan,这是不可能的,因为它没有实现IConvertible。您可以编写一个包装类并在查询中选择该类
var query = (from db in Setupctx.requiredtimings
join timing t in Setupctx.timings on db.RequiredTimingID equals t.TimingID
where db.RequiredLocationStationID == selectLocStation
select new WrapperClass
{
Time = t.Time2
}).ToList();
public class WrapperClass
{
public DateTime Time { get; set; }
}
其中time是在包装器类中定义的日期时间
private void Edit_TS_Load(object sender, EventArgs e)
{
using (satsEntities Setupctx = new satsEntities())
{
var DeleteRT = (from DelRT in Setupctx.requiredtimings
join locationstationname ls in Setupctx.locationstationnames on DelRT.RequiredLocationStationID equals ls.locationstationID
select new {ls.locStatname, DelRT.RequiredLocationStationID}).Distinct().ToList();
cbLocStation.DataSource = DeleteRT.ToList();
cbLocStation.DisplayMember = "locStatname";
cbLocStation.ValueMember = "RequiredLocationStationID";
}
}
答案就在这里 我尝试了你的方法,他们提示我另一个错误,说输入字符串的格式不正确。@rookie ohhh尝试检查字符串是否包含数字,否则使用int parseI我使用的是Windows窗体应用程序。@rookie我想问题是因为你使用的是databind你是指我用来绑定数据的数据源吗我的组合对吗?我尝试通过使用项使用其他方法。添加,但selectedValue与我的数据库不同,因此无法在所选名称下显示任何数据。编写WrapperClass是什么意思?能举几个例子吗?谢谢select new返回一个匿名类型,一个您无法对其执行操作的类型,例如您正在尝试完成的类型。相反,您应该根据需要编写一个从查询返回的类。然后您可以处理输出。我不能使用DateTime,因为我正在使用TimeSpan,如果我将DateTime更改为TimeSpan,仍然会提示错误。如何初始化组合框?您能告诉我们您的组合框包含哪些值吗?让我向您展示我在组合框中存储数据的代码。