无法转换为System.IConvertible类型

时间:2014-11-27 14:08:00

标签: c# combobox converter

尝试为组合框设置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?你们任何人都可以帮助我吗?

谢谢!

1 个答案:

答案 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";

   }