2014-11-27 4 views
1

У меня возникла проблема при попытке установить DataSource для combobox. Я получаю ошибку. Невозможно преобразовать тип System.IConvertible. Он говорит, что это потому, что у меня есть System.Convert.ToInt32 (значение объекта), но я преобразовываю объект в int. Я просто не могу понять, как это решить.Невозможно преобразовать в тип System.IConvertible

источник данных должен срабатывать, когда я выбираю элемент в другом поле со списком. Вот событие 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. И это int i получить из трех других comboboxes и поместить в службу movieRunService.GetRunTimeOnNameDateAndTime(), и для этого нужны три строки cbBookedSeatMovInfo.SelectedValue, cbBookedSeatMovDate.SelectedValue и cbBookedSeatMovTime.SelectedValue.

Я не понимаю, почему я не могу преобразовать объект в int32? может кто-нибудь из вас мне помочь.

Спасибо!

+0

... что возвращает GetRunTimeOnNameDateAndTime? –

+0

GetRunTimeOnNameDateAndTime возвращает список MovieRunTime. –

+0

Затем, как список может быть преобразован в целое число с Convert.ToInt32()? –

ответ

0

Проблема заключается в том, что вы пытаетесь преобразовать список MovieRunTime в integer.

Вы должны получить первый элемент в своем списке, а затем получить требуемое целочисленное значение.

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

    } 
+0

Не знаете, как объявить список MovieRunTime? может сделать это так, как вы показываете в ответе. Нужно ли объявлять этот список в моей службе WCF? –

+0

По какой-то причине я не могу составить список <> типа MovieRunTime. Но все остальное имеет смысл! Какой тип я должен сделать в своем списке? –

Смежные вопросы