单击按钮时,C#在datagridview中查找行索引(行号)

时间:2015-12-06 19:19:48

标签: c# winforms datagridview row

这是我的应用程序的基本UI,当我点击红色(订婚房间)按钮时,它应突出显示datagridview中cusid = 1的行,并且不应该点击其他行。

this is the datagridview and the red button

this picture might explain better what i want to say

我无法在dgv中找到cusid = 1的行索引(行号),因此我可以选择/突出显示它。具体来说。

这可以做到,有什么帮助?

我有一个bookmyroom应用程序,我使用以下代码添加我的datagridview:

    OleDbConnection connection = new OleDbConnection();
connection.Open();
OleDbCommand command = new OleDbCommand();
command.Connection = connection;
string query = "select id,cusid,cusname,timein,
timeout,duration,amount,remark from entry";
command.CommandText = query;
OleDbDataAdapter da = new OleDbDataAdapter(command);
DataTable dt = new DataTable();
da.Fill(dt);
dataGridView1.DataSource = dt;

和我的复选框列使用此代码;

    DataGridViewCheckBoxColumn checkColumn = new DataGridViewCheckBoxColumn();
checkColumn.Name = "logout";
checkColumn.HeaderText = "Logout";
checkColumn.Width = 50;
checkColumn.ReadOnly = false;
checkColumn.FillWeight = 10;
dataGridView1.Columns.Add(checkColumn);

2 个答案:

答案 0 :(得分:1)

在您阅读答案之前,您应该知道在Windows应用程序中,您可以拥有多个表单,并且可以使用其他形式执行某些任务。例如,您可以将网格设为只读,然后选择一行并单击结帐按钮并以其他形式执行编辑操作。

但基于你的问题:

您可以为所有按钮分配一个事件处理程序,然后在处理程序中为每行查看cusid列(index = 1的列),并检查该值是否等于按钮{{1然后激活Text单元格,否则使行只读:

logout

答案 1 :(得分:0)

字面意思是我的头脑和未经测试,你可能想尝试这样的事情来使下一行(如果那真的是你需要的):

    private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
    {
        var senderGrid = (DataGridView)sender;

        if (senderGrid.Columns[e.ColumnIndex] is DataGridViewCheckBoxColumn &&
            e.RowIndex >= 0)
        {
            var nextRowNum = senderGrid.Rows[e.RowIndex] + 1;
            // do what you need with the custId cell/value
            // i.e. select that row and hilite it etc
        }
    }
如果我误解了您对所添加图片的要求,请道歉。