尝试为组合框设置DataSource时遇到问题。我得到错误无法转换为类型System.IConvertible。它说它是因为我有一个System.Convert.ToInt32(对象值),但我将对象转换为int。我似乎无法弄清楚如何解决这个问题。
当我在另一个组合框中选择一个项目时,数据源必须触发。 这是SelectIndex事件,我尝试转换对象,并尝试填充组合框。
private void cbBookedSeatMovTime_SelectedIndexChanged(object sender, EventArgs e)
{
ServiceReferenceMovieRunTime.MovieRunTimeServiceClient movRunService = new ServiceReferenceMovieRunTime.MovieRunTimeServiceClient();
ServiceReferenceSeats.SeatsServiceClient seatService = new ServiceReferenceSeats.SeatsServiceClient();
string _selectedMovName = Convert.ToString(cbBookedSeatMovInfo.SelectedValue);
string _selectedMovDate = Convert.ToString(cbBookedSeatMovDate.SelectedValue);
string _selectedMovTime = Convert.ToString(cbBookedSeatMovTime.SelectedValue);
int _runTimeId = Convert.ToInt32(movRunService.GetRunTimeOnNameDateAndTime(_selectedMovName, _selectedMovDate, _selectedMovTime));
cbRow1.DataSource = seatService.GetRowsOnRunTime(_runTimeId);
cbRow1.ValueMember = "id";
cbRow1.DisplayMember = "rowId";
}
获取seatService.GetRowsOnRunTime();我必须加入一个int。我从其他三个组合框中获取并放入服务movieRunService.GetRunTimeOnNameDateAndTime(),这需要三个字符串cbBookedSeatMovInfo.SelectedValue,cbBookedSeatMovDate.SelectedValue和cbBookedSeatMovTime.SelectedValue。
我不明白为什么我不能将对象转换为int32?你们任何人都可以帮助我吗?
谢谢!
答案 0 :(得分:0)
这里的问题是您正在尝试转换整数的MovieRunTime列表。
您必须获取列表中的第一个元素,然后获取所需的整数值。
string _selectedMovName = Convert.ToString(cbBookedSeatMovInfo.SelectedValue);
string _selectedMovDate = Convert.ToString(cbBookedSeatMovDate.SelectedValue);
string _selectedMovTime = Convert.ToString(cbBookedSeatMovTime.SelectedValue);
//declare list of MovieRunTime and store your results
list<MovieRunTime> myList= movRunService.GetRunTimeOnNameDateAndTime(_selectedMovName, _selectedMovDate, _selectedMovTime);
//check if your list is not null and if has items
if (myLista != null && myLista.count > 0) {
{
MovieRunTime firstElement = myList[0];
int _runTimeId = firstElement.IdValue;
cbRow1.DataSource = seatService.GetRowsOnRunTime(_runTimeId);
cbRow1.ValueMember = "id";
cbRow1.DisplayMember = "rowId";
}