как я могу сохранить выбранное значение RadComboBox в коде С#?

Мой RadComboBox должен раскрываться и отображать параметры, которые я могу выбрать. параметры - это имя, но выбранные значения - это числа, соответствующие идентификатору центра.

<telerik:RadComboBox DataValueField="OPERATION_CENTER_ID" RenderingMode="Full" EmptyMessage="Select Operation Center" DataTextField="OPERATION_CENTER_NAME" ID="RadComboBox1" runat="server"></telerik:RadComboBox>

 protected void rdOrders_NeedDataSource(object sender, Telerik.Web.UI.GridNeedDataSourceEventArgs e) {
     //Get OPERATION_CENTER_ID in f1 from f2 query (it is an int)

     string f2 = "select * from [dbo].[GetOperationCentersInfo]('F')";

     SQLHelper a = new SQLHelper(SQLHelper.ConnectionStrings.EmallShippingConnectionString);

       int ID = RadComboBox1.SelectedValue; {
       string f1 = "select * from [dbo].[GetReadyDeliveryOrderItems](" + ID + ")";
       DataTable DataTable1 = a.getQueryResult(f1); //Orders Query by OPERATION_CENTER_ID
       DataTable DataTable2 = a.getQueryResult(f2); //Operation centers Query
       DataTable testDataTable = new DataTable();
       rdOrders.DataSource = DataTable1;
       RadComboBox1.DataSource = DataTable2;

       RadComboBox1.DataBind();
     }

По сути, когда пользователь выбирает значение из RadComboBox1, я хочу сохранить это значение в переменной int.


person ytba92    schedule 19.07.2016    source источник
comment
Вы уверены, что SelectedValue является целым числом? каково было его значение при отладке?   -  person BugFinder    schedule 19.07.2016
comment
Я пытаюсь сохранить selectedValue как целое число, это моя проблема, это строка типа, потому что, когда я пытался напрямую сохранить selectedValue в переменной int, он сказал, что не может неявно преобразовать строку типа в int   -  person ytba92    schedule 19.07.2016
comment
это вообще не ответило на мой вопрос .. каково значение в selectedvalue ?? отладь, посмотри, покажи здесь   -  person BugFinder    schedule 19.07.2016
comment
При загрузке первой страницы пусто   -  person ytba92    schedule 19.07.2016
comment
ну вот, пустое это не целое число не так ли   -  person BugFinder    schedule 19.07.2016
comment
Но проблема в том, что когда я помещаю оператор if (radComboBox1.selectedValue == null), он пропускает оператор if. Как я могу заставить его ждать, пока я выберу значение, а затем выполнить обработку?   -  person ytba92    schedule 19.07.2016
comment
Вы почти ничего не предоставили о том, что вы на самом деле делаете, так что это будет только предположение, но, если вы получаете это при первом открытии ... он должен пропускать операторы if !! затем установите значения.. они изменятся.. и т. д.   -  person BugFinder    schedule 19.07.2016
comment
Если вам нужна дополнительная информация, пожалуйста, дайте мне знать, страница даже не загружается, чтобы я мог выбрать утверждения.   -  person ytba92    schedule 19.07.2016
comment
Я только что объяснил, что делать. Я не твоя мать, я не собираюсь делать это за тебя.   -  person BugFinder    schedule 19.07.2016


Ответы (2)


Надеюсь, что DataValueField назначается при привязке сетки, а значение может быть преобразовано в целое число. Затем я хотел бы предложить int.TryParse для это преобразование, чтобы вы использовали его возвращаемое значение, чтобы проверить, было ли преобразование успешным или нет. См. код ниже:

int ID;
if(Int32.TryParse(RadComboBox1.SelectedValue,out ID))
{
  // You can proceed with ID 
}
else
{
  // Conversion failed
}
person sujith karivelil    schedule 19.07.2016

Есть ли какая-то конкретная причина, по которой вам нужно привязывать данные к элементу управления RadComboBox в событии NeedDataSource? Это не гарантирует, что ваш элемент управления RadComboBox будет загружен правильно из-за жизненного цикла вашей страницы/элемента управления.

Что вы можете сделать, так это добавить свой код привязки данных к событию Page_Load, как показано ниже.

protected void Page_Load(object sender, EventArgs e)
{
   if (!IsPostBack)
   {
      BindRadComboBox();
   }
}

private void BindRadComboBox()
{
    string f2 = "select * from [dbo].[GetOperationCentersInfo]('F')";

     SQLHelper a = new SQLHelper(SQLHelper.ConnectionStrings.EmallShippingConnectionString);

       int ID = RadComboBox1.SelectedValue; {
       string f1 = "select * from [dbo].[GetReadyDeliveryOrderItems](" + ID + ")";
       DataTable DataTable1 = a.getQueryResult(f1); //Orders Query by OPERATION_CENTER_ID
       DataTable DataTable2 = a.getQueryResult(f2); //Operation centers Query
       DataTable testDataTable = new DataTable();
       rdOrders.DataSource = DataTable1;
       RadComboBox1.DataSource = DataTable2;
       RadComboBox1.DataBind();
}

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

Надеюсь это поможет.

person woodykiddy    schedule 19.07.2016