繁体   English   中英

根据数据网格视图选择绑定到组合框

[英]Bind to Combo box based on Data Gridview selection

我有这个问题;

int性别= int.Parse(row.Cells [0] .Value.ToString()); cmbGender.SelectedValue =性别;

  1. 我使用另一个表中的值ID将值保存到数据库中的另一个表中。
  2. 我想从数据库中检索名称而不是值的ID并将其绑定到组合框。 组合框已从数据库中进行选择。
  3. 上面的代码为我提供了从我的数据网格视图到组合框的第一个选择的雌性。 第二种是男性。
  4. 当我移到表格的第三行时,未选择性别。
  5. 第一个选择也不与数据库中的确切记录相对应。 我需要你的帮助

因为您没有以有组织的方式发布代码的所有相关部分,所以很难为您提供帮助。
我看到你是新来的,请阅读: 我如何问一个好问题

因为您的问题中缺少某些部分,所以我会做一些假设。
请尝试理解我回答的原理

  1. 我假设您使用Datatable以便从数据库检索数据。
  2. 我假设列名是“ ID”和“性别”
  3. 我假设性别的值为0(男性)和1(“女性”)。
  4. 我假设您的组合框值为“ MALE”和“ FEMALE”

我建议使用字典以获取每个Cellclick事件中ID的性别

请阅读代码中的注释:

private void Form1_Load(object sender, EventArgs e)
{
    GetDataFromDataBase();
}

Dictionary<int, int> IdGenderDict;
private void GetDataFromDataBase()
{
    // get data from database
    DataTable dt = DAL.DataBase.GetData();
    // set datagridview
    dtGrdAdd.DataSource = dt;
    // initilize dictionary that willl hold key value pair for ID against its gender
    IdGenderDict = new Dictionary<int, int>();
    // set the dictionary
    for (int i = 0; i < dt.Rows.Count; i++)
    {
        IdGenderDict.Add(Convert.ToInt32(dt.Rows[i]["ID"].ToString()),
        Convert.ToInt32(dt.Rows[i]["Gender"].ToString()));
    }
}

private void dtGrdAdd_CellClick(object sender, DataGridViewCellEventArgs e)
{
    // get the selected id from the datagridview
    var id = Convert.ToInt32(this.dtGrdAdd.Rows[e.RowIndex].Cells["ID"].ToString());
    // find the gender using the dictionary
    var gender = IdGenderDict[id];
    // set the combobox with the gender
    if (gender == 0)
    {
        cmbGender.SelectedItem = "MALE";
    }
    else
    {
        cmbGender.SelectedItem = "FEMALE";
    }
}

从Databse通过storedProcedure:Gender.ID作为GenderID,Gender.Gender,

内联性别ON Gender.ID = Staff.Gender

在WinForms中:

私有void dtGrdAdd_CellClick(对象发送者,DataGridViewCellEventArgs e)
{

//获取一个包含所有行的集合DataGridViewRow row = this.dtGrdAdd.Rows[e.RowIndex];

// row.Cells [4] .Value代表DataGridView上Row的索引
int gender = int.Parse(row.Cells[4].Value.ToString()); cmbGender.SelectedValue = gender;

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM