这是我的应用程序的基本UI,当我点击红色(订婚房间)按钮时,它应突出显示datagridview中cusid = 1的行,并且不应该点击其他行。
我无法在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);
答案 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
}
}
如果我误解了您对所添加图片的要求,请道歉。