cluelessentity Ответов: 1

Отображаемое имя плана, но удерживайте идентификатор плана и получить значение ID в поле со списком


Я видел много-много статей на эту тему, но пока ни одна не помогла.
Мое имя ComboBox-cbPlan. Я хочу получить PlanName на его дисплее, но на самом деле хочу держать его PlanID.
Следующий код отображает как имена, так и идентификаторы. Я попробовал ValueMember, DisplayMember, properties, но пока не смог разобраться.
Наконец, даже если это сработает, как я смогу вставить PlanID в другую таблицу? Буду ли я использовать Convert.ToString(cbPlan. Text) - который принесет имя плана, а не идентификатор.
Пожалуйста, помогите в этом - большое вам заранее спасибо! :)
Тип данных П. С. PlanID является тип int.


private void cbPlan_Click(object sender, EventArgs e)
       {
           cbPlan.Items.Clear();

           string pullsub = "select PlanID,PlanName from fbkPlanMaster(nolock)";
           string connString = ConfigurationManager.ConnectionStrings["Dbconn"].ToString();
           SqlConnection connection = new SqlConnection(connString); // defining sql connection
           SqlCommand cmd = new SqlCommand(pullsub, connection);
           cmd.CommandText = pullsub;
           connection.Open();
           SqlDataReader drd = cmd.ExecuteReader();
           while (drd.Read())
           {

               cbPlan.Items.Add(drd["PlanID"]);
               cbPlan.Items.Add(drd["PlanName"]);
               cbPlan.ValueMember = "PlanID";
               cbPlan.DisplayMember = "PlanName";


           }
       }


Что я уже пробовал:

- Несколько статей на подобные темы.
- Код, как показано выше.
- Свойства ValueMember и DisplayMember.
- Преобразование в int.

Michael_Davies

Зачем преобразовывать в строку то, что уже является строкой?

"Преобразовать.ToString(cbPlan. Text) - который принесет имя плана, а не идентификатор."

cluelessentity

Вот именно, это не работает.
Но даже если я получу PlanID как valuemember в combobox, он не будет извлечен при сохранении в базе данных для другой таблицы.

Если использовать в качестве cbPlan.ValueMember, он возвращает PlanID.
Если использовать в качестве cbPlan.Текст, он возвращает planname на.

Karthik_Mahalingam

Совет: Всегда используйте  Ответить  кнопка, чтобы отправить комментарии / запрос пользователю, чтобы пользователь получил уведомление и ответил на ваш текст.

1 Ответов

Рейтинг:
11

Karthik_Mahalingam

попробуйте использовать Адаптер Данных SQl[^]

private void cbPlan_Click(object sender, EventArgs e)
      {
          cbPlan.Items.Clear();
          string pullsub = "select PlanID,PlanName from fbkPlanMaster(nolock)";
          string connString = ConfigurationManager.ConnectionStrings["Dbconn"].ToString();
          SqlConnection connection = new SqlConnection(connString); // defining sql connection
          SqlCommand cmd = new SqlCommand(pullsub, connection);
          cmd.CommandText = pullsub;
          SqlDataAdapter da = new SqlDataAdapter(cmd);
          DataTable dt = new DataTable();
          da.Fill(dt);
          cbPlan.ValueMember = "PlanID";
          cbPlan.DisplayMember = "PlanName";
          cbPlan.DataSource = dt;


      }


cluelessentity

Привет Картик,

Это прекрасно сработало для дисплея.
Но что можно было сделать, чтобы выбрать только значение combobox, чтобы сохранить его в другой таблице?
Ниже приведен запрос, который я использую:
УМК.CommandText = " вставить в fbkpatientmaster значения ('"+ fname + "', '" + lname +"', '" + gender +"', " + Environment. NewLine
+ "'"+адрес +"', '" + штат+"', '" + город +"', '" + электронная почта+"', '" + мобильный +"', '" + стационарный+"', " + окружающая среда.
+ "'"+ dob + "'," + 0 + "," + cbPlan.Text+", '" + comments + "', " + " getdate (), getdate())";

Если использовать в качестве cbPlan.ValueMember, он возвращает PlanID.
Если использовать в качестве cbPlan.Текст, он возвращает planname на.

madhav_jain

Используйте свойство "SelectedValue", чтобы получить значение.

cluelessentity

Гений ты-Мадхаван.
Это сработало.
Решение Картика помогло мне получить ценность в combobox. И ваши помогли сохранить его в другой таблице.
Ты сделал мой день!
Спасибо тонна :)

Karthik_Mahalingam

круто, что это сработало :)

Maciej Los

5ед!

Karthik_Mahalingam

Спасибо Мацей