我是DataTables的新手,我正在尝试访问与行和colls相对的单个单元格。我通过findResult获取了一系列数据 这是来自现有的webService。我现在正在尝试访问“Id”列,但用户将单击的单个单元格。然后,我将其存储在var中,以便在类中进行进一步处理。
我填充了我的数据表如下:
DataTable ss = new DataTable();
ss.Columns.Add("ID");
ss.Columns.Add("Text");
ss.Columns.Add("Highlight");
ss.Columns.Add("Cursor");
ss.Columns.Add("Description");
ss.Columns.Add("Next");
DataRow row = ss.NewRow();
row["ID"] = findResults[0].Id;
row["Text"] = findResults[0].Text;
row["Highlight"] = findResults[0].Highlight;
row["Cursor"] = findResults[0].Cursor;
row["Description"] = findResults[0].Description;
row["Next"] = findResults[0].Next;
ss.Rows.Add(row);
if (txt_Search.Text.Length <= 2 || txt_Search.Text.Length >= 9)
{ MessageBox.Show("Please enter more than 2 Chars!!"); }
foreach (DataRow itemDrow in ss.Rows)
{
foreach (var item in findResults)
{
var num = dataGridView1.Rows.Add();
dataGridView1.Rows[num].Cells[0].Value = item.Id.ToString();
dataGridView1.Rows[num].Cells[1].Value = item.Text.ToString();
dataGridView1.Rows[num].Cells[2].Value = item.Highlight.ToString();
dataGridView1.Rows[num].Cells[3].Value = item.Cursor.ToString();
dataGridView1.Rows[num].Cells[4].Value = item.Description.ToString();
dataGridView1.Rows[num].Cells[5].Value = item.Next.ToString();
}
}
这就是我尝试实现点击事件的方式,但它只返回第一行和可变“ID”的coll而不是我点击另一个单元格的重新设置。
private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
{
foreach (DataGridViewRow row in dataGridView1.SelectedRows)
{
string value1 = row.Cells[0].Value.ToString();
string value2 = row.Cells[1].Value.ToString();
string SerachId = findResults[0].Id.ToString();
Console.WriteLine(SerachId);
//...
}
答案 0 :(得分:0)
CellClick
事件中的DataGridViewCellEventArgs
会公开两个属性:ColumnIndex
和RowIndex
,它们会告诉您用户点击了哪个单元格。获得DataGridViewCell
后Value
变得简单。
示例:
var clickedCell = dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex];
var value = clickedCell.Value;
答案 1 :(得分:0)
在进行了一些游戏并使用@Kempeths响应之后,我解决了它,如下所示,现在打印出双击的每个单元格中的信息,谢谢:
public void dataGridView1_CellMouseDoubleClick(object sender, DataGridViewCellMouseEventArgs e)
{
var clickedCell = dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value;
if (clickedCell != null)
{
MessageBox.Show(dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.ToString());
string SerachId = clickedCell.ToString();
}