从CellClickEvent中获取DataTable中的indivdul单元格

时间:2017-05-24 09:58:13

标签: c# winforms collections datatable

我是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);
            //...
        }

2 个答案:

答案 0 :(得分:0)

CellClick事件中的DataGridViewCellEventArgs会公开两个属性:ColumnIndexRowIndex,它们会告诉您用户点击了哪个单元格。获得DataGridViewCellValue变得简单。

示例:

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();
        }