DataGridView选择器如何去到特定的记录

本文关键字:记录 选择器 何去 DataGridView | 更新日期: 2023-09-27 18:15:25

添加客户记录后,我调用一个函数,该函数在DataGridView中显示所有客户,并选择DataGridView中的第一行。

现在我想我的填充DataGridView去customerid刚才已添加。现在添加的记录是在我的DataGridView,是在列表的末尾,第一个记录已从DataGridView中选择。

private void btnAdd_Click(object sender, EventArgs e)
{
    frmAddModifyCustomer addCustomerForm = new frmAddModifyCustomer();
    addCustomerForm.addCustomer = true;
    DialogResult result = addCustomerForm.ShowDialog();
    if (result == DialogResult.OK)
    {
        customer = addCustomerForm.customer;
        txtCustomerID.Text = customer.CustomerID.ToString();
        this.DisplayCustomer();
        this.AllCustomer();
    }
}
private void AllCustomer()
{
    DataTable dt = new DataTable();
    try
    {
        dt = CustomerDB.AllCustomer();
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message, ex.GetType().ToString());
    }

    if (dt != null)
    {
        grvCustomer.Visible = true;
        grvCustomer.DataSource = dt;
    }
    else
    {
        MessageBox.Show("No customer found with this ID. " +
                "Please try again.", "Customer Not Found");
        grvCustomer.Visible = false;
        this.ClearControls();
    }
}

DataGridView选择器如何去到特定的记录

你可以试试这个解决方案:

grvCustomer.ClearSelection();
int IndexRow = grvCustomer.Rows.Count - 1;
grvCustomer.Rows[IndexRow].Selected = true;

此代码将选择数据网格中的最后一行

和滚动到最后一行,如果有不可见的行,你可以试试:

grvCustomer.FirstDisplayedScrollingRowIndex = IndexRow;

据我所知,您希望在网格底部选择新添加的行。

如果存在,您可以清除先前的选择。将最后一行的选定属性设置为true。再次选择滚动网格的视图到网格的最后一行,以防它在可见网格的区域之外。

var lastRowIndex = this.grvCustomer.Rows.Count - 1;
this.grvCustomer.ClearSelection();
this.grvCustomer.Rows[lastRowIndex].Selected = true;
this.grvCustomer.FirstDisplayedScrollingRowIndex = lastRowIndex;
编辑:

如果不知道修改的行,则必须枚举rows集合并查找客户ID列下与对话框表单的值匹配的单元格值。

foreach (DataGridViewRow row in this.grvCustomer.Rows)
{
    if (row.Cells["CustomerID"].Value.ToString() == addCustomerForm.customer.CustomerID.ToString())
    {
        row.Selected = true;
        break;
    }
}