【问题标题】:Can't convert to type System.IConvertible无法转换为 System.IConvertible 类型
【发布时间】:2015-01-26 03:56:26
【问题描述】:

我在尝试为组合框设置 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";

    }

获取席位Service.GetRowsOnRunTime();我必须输入一个整数。我从其他三个组合框获得的 int 并放入服务 movieRunService.GetRunTimeOnNameDateAndTime() ,这需要三个字符串 cbBookedSeatMovInfo.SelectedValue、cbBookedSeatMovDate.SelectedValue 和 cbBookedSeatMovTime.SelectedValue。

我不明白为什么我不能将对象转换为 int32 ?谁能帮帮我。

谢谢!

【问题讨论】:

  • ...GetRunTimeOnNameDateAndTime 返回什么?
  • GetRunTimeOnNameDateAndTime 返回 MovieRunTime 列表。
  • 那么如何用Convert.ToInt32()将list转换成整数呢?
  • 我不知道这是否是正确的做法?你能建议另一种方式吗?

标签: c# combobox converter


【解决方案1】:

这里的问题是您正在尝试将 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 服务中声明此列表吗?
  • 由于某种原因,我无法制作 MovieRunTime 类型的列表。但其余的很有意义!我应该列出什么类型的清单?
猜你喜欢
  • 2015-12-17
  • 2012-03-14
  • 1970-01-01
  • 1970-01-01
  • 2020-12-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多