2014-08-29 3 views
0

Это функция, которую я использовал для загрузки combobox. Я могу загрузить combobox, но когда я пытаюсь получить selectedvalue из combobox, он показывает null; Я не получаю фактическую ценность.Combobox выбранное значение не получается

public static DataTable GetComboBoxedDataTable(DataTable oldDataTable, string valueColumn, string textColumn, string topRowValue, string topRowText, ComboBox cmb) 
{ 
    DataTable newDataTable = new DataTable(); 
    newDataTable.Columns.Add(valueColumn); 
    newDataTable.Columns.Add(textColumn); 
    foreach (DataRow oldDR in oldDataTable.Rows) 
    { 
     DataRow newDR = newDataTable.NewRow(); 
     newDR[0] = oldDR[valueColumn].ToString(); 
     newDR[1] = oldDR[textColumn].ToString(); 
     newDataTable.Rows.InsertAt(newDR, newDataTable.Rows.Count); 
    } 

    // Add your 'Select an item' option at the top 
    DataRow dr = newDataTable.NewRow(); 
    dr[0] = topRowValue; 
    dr[1] = topRowText; 
    newDataTable.Rows.InsertAt(dr, 0); 

    cmb.ValueMember = valueColumn; 
    cmb.DisplayMember = textColumn; 
    return newDataTable; 
} 

Код для заполнения выпадающий:

PolosysHMS.General.Classes.GeneralClass.GetComboBoxedDataTable(ds.Tables[0], "RoomID", "RoomNo", "0", "Select", cmbroomno); 

код, где я нахожусь в потребности combobox.selectedvalue:

private void cmbroomno_SelectedIndexChanged(object sender, EventArgs e) 
     { 
      try 
      { 
       object[,] ParamArray = new object[,] { { "@RoomID", cmbroomno.SelectedValue } };---code where i need selected value 
       DataSet ds = new DataSet(); 
       ds = DB.ExecuteQuery_SP("SelectGuestDetailsForService", ParamArray); 

Код для заполнения COMBOBOX:

+1

показать код, как вы получаете выбранное значение. – Mairaj

+1

Где вы установили DataSource для комбо? – Seminda

+0

// DataSet ds = DB.ExecuteQuery_SP ("SelectRoomsByCheckStatus"); //PolosysHMS.General.Classes.GeneralClass.GetComboBoxedDataTable(ds.Tables[0], «RoomID», «RoomNo», «0», «Select», cmbroomno); –

ответ

0

Прежде всего, вы должны изменить свой код, чтобы заполнить поле со списком. его внешний вид странный.

public static DataTable GetComboBoxedDataTable(DataTable oldDataTable, string valueColumn, string textColumn, string topRowValue, string topRowText, ComboBox cmb) 
{ 
    DataTable newDataTable = oldDataTable.Copy(); 
    DataRow dr = newDataTable.NewRow(); 
    dr[0] = topRowValue; 
    dr[1] = topRowText; 
    newDataTable.Rows.InsertAt(dr, 0); 

    cmb.ValueMember = valueColumn; 
    cmb.DisplayMember = textColumn; 
    cmb.DataSource = newDataTable; 
    return newDataTable; 
} 

Вторая вещь, которую вы объявляете многомерном массив для хранения значения

private void cmbroomno_SelectedValueChanged(object sender, EventArgs e) 
{ 
    object[,] ParamArray = new object[,] { { "@RoomID", cmbroomno.SelectedValue } }; 
    DataSet ds = DB.ExecuteQuery_SP("SelectGuestDetailsForService", ParamArray); 
} 
+0

shell i update my answer –

0

You пропущен для установки DataSet.

cmb.DataSource = newDataTable 
cmb.ValueMember = valueColumn; 
cmb.DisplayMember = textColumn; 
return newDataTable; 
+0

для datasource datatable достаточно ... если мы используем набор данных, мы выбираем таблицу в нем ..... –

+0

Вы сказали, что не получаете значение выбранного элемента? правильно. потому что ваш источник данных cmb имеет значение NULL. просто замените код моим кодом и проверьте. –

+0

Combobox является обязательным и показывает данные в combobox, но при переходе на выбранное значение отображается нулевое значение, если источник данных null, как combobox будет связываться и показывать данные. –

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