无法将类型转换为 System.IConvertible

3

我在尝试为下拉框设置DataSource时遇到了问题。我收到了“无法转换为类型System.IConvertible”的错误。它说这是因为我有一个System.Convert.ToInt32(object value),但我正在将对象转换为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";

    }

要获取座位服务的行数,我需要输入一个整数。而这个整数是从另外三个组合框中获得的,然后传递给电影运行服务 movieRunService.GetRunTimeOnNameDateAndTime() 方法中的三个字符串参数 cbBookedSeatMovInfo.SelectedValue、cbBookedSeatMovDate.SelectedValue 和 cbBookedSeatMovTime.SelectedValue。

我不明白为什么无法将对象转换为 int32?有谁能帮帮我吗?

谢谢!


GetRunTimeOnNameDateAndTime 函数返回什么? - Adriano Repetti
GetRunTimeOnNameDateAndTime 返回一个 MovieRunTime 的列表。 - Code_Viking
那么如何使用Convert.ToInt32()将列表转换为整数? - Adriano Repetti
我不知道这是否是正确的方法?你能否建议另一种方式? - Code_Viking
1个回答

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

   }

不知道如何声明MovieRunTime列表?可以按照答案中展示的方法来做。我需要在我的WCF服务中声明这个列表吗? - Code_Viking
由于某些原因,我无法创建一个 MovieRunTime 类型的 list<>。但是其余部分都很有意义!我应该用什么类型来创建我的 list? - Code_Viking

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接