Как получить значения из BindingSource в C # - PullRequest
0 голосов
/ 27 октября 2018

Я работаю с WinForm в этом у меня есть 3 RadioButton один ComboBox и три BindingSource

Я хочу, чтобы при проверке любого из RadioButton s значения из конкретного DataSources связывались с ValueMember и DisplayMember.
ComboBox. В программе есть SQL-запрос, в который я хочу отправить значение на основе установленного переключателя.

private void rdbMed_CheckedChanged(object sender, EventArgs e)
{
    cmbStock.DataSource = null;
    cmbStock.DataSource = this.medicinesBindingSource;
    this.cmbStock.DisplayMember = ""; //i want to bind "Med_ID" from medicinesBindingSource
    this.cmbStock.ValueMember = "";  //"Med_Name"

}

private void rdbCat_CheckedChanged(object sender, EventArgs e)
{
    cmbStock.DataSource = null;
    cmbStock.DataSource = this.categoriesBindingSource;
    this.cmbStock.DisplayMember = ""; //"category_Name"
    this.cmbStock.ValueMember = ""; // category_ID"
}

private void rdbPharm_CheckedChanged(object sender, EventArgs e)
{
    cmbStock.DataSource = null;
    cmbStock.DataSource = this.pharmaceuticalBindingSource;
    this.cmbStock.DisplayMember = "";// "Pharma_Name"
    this.cmbStock.ValueMember = "";// "Pharma_ID"
}

Ниже приведены параметры запроса. Это поможет вам понять, чего я хочу достичь.

if (rdbMed.Checked)
{
    con.cmd.Parameters.AddWithValue("@Med_ID", cmbStock.ValueMember);
    con.cmd.Parameters.AddWithValue("@category_ID", "");
    con.cmd.Parameters.AddWithValue("@Pharma_ID", "");
}
else if (rdbCat.Checked)
{
    con.cmd.Parameters.AddWithValue("@Med_ID", "");
    con.cmd.Parameters.AddWithValue("@category_ID", cmbStock.ValueMember);
    con.cmd.Parameters.AddWithValue("@Pharma_ID", "");
}
else if (rdbPharm.Checked)
{
    con.cmd.Parameters.AddWithValue("@Med_ID", "");
    con.cmd.Parameters.AddWithValue("@category_ID", "");
    con.cmd.Parameters.AddWithValue("@Pharma_ID", cmbStock.ValueMember);
}

1 Ответ

0 голосов
/ 27 октября 2018

Самый простой и наименее болезненный способ сделать это - разрешить его внутри команды SQL, и способ сделать это - привести ваши столбцы к AS VM и AS DM и сделать ваши DisplayMember = "DM" и ValueMember = "VM", так что если у вас естьSQL-запрос, такой как SELECT USERID AS VM, NAME AS DM или SELECT PRODUCTID AS VM, NAME AS DM, он будет работать.

Проблема позже, если вы что-то делаете с кодом, и вы можете ошибаться, пытаясь получить USERID из привязки данных, но вместо этого VM,Чтобы избежать этого, вы можете «дважды выбирать» значения в запросе, например SELECT USERID, NAME, ...., USERID AS VM, NAME AS DM, таким образом, вы будете иметь VM и DM для своих элементов управления, но при этом все еще будете содержать исходные столбцы.

...