C# 选择datagridview单元格或列时如何获取数据

C# 选择datagridview单元格或列时如何获取数据,c#,winforms,datagridview,C#,Winforms,Datagridview,我在Windows窗体应用程序中有2个datagridview控件。 当我选择第一个datagridview单元格或行到下一个datagridview时,我想获取一个人的信息: try { ConnectionStringSettings consettings = ConfigurationManager.ConnectionStrings["attendancemanage

我在Windows窗体应用程序中有2个datagridview控件。
当我选择第一个datagridview单元格或行到下一个datagridview时,我想获取一个人的信息:

try
{

    ConnectionStringSettings consettings =                                                        ConfigurationManager.ConnectionStrings["attendancemanagement"];                                                                     
    string connectionString = consettings.ConnectionString;
    SqlConnection con = new SqlConnection(connectionString);
    con.Open();
    adap3 = new SqlDataAdapter(@"SELECT   Date,Attendance,Remarks FROM dailyattendance where employee_id='"+DailyGV.CurrentRow+"'", con);

    ds3 = new DataSet();
    adap3.Fill(ds3, "dailyattendance");
    dataGridView1.DataSource = ds3.Tables[0];

}

我正在尝试上面的代码。但它不起作用。

您正在选择查询中将当前行的索引作为员工id传递。传递所选记录的员工id。然后它就可以正常工作了。

我不太确定
每日gv.CurrentRow
是什么,但基本上你可以使用
RowHeaderMouseClick
…参见。要使用它,请在初始化表单组件时将事件处理程序挂接到它(您也可以使用VS designer

dataGridView1.RowHeaderMouseClick += dataGridView1_RowHeaderMouseClick;

void dataGridView1_RowHeaderMouseClick(
object sender, DataGridViewCellMouseEventArgs e)
{
}
每当您在
DataGridView
控件中选择一个行标题时,此事件处理程序将被激发,该控件将通过
datagridviewCellMouseevenTargets
类的实例传递有关事件的信息(请参阅)。此参数具有一个
RowIndex
属性,该属性提供所单击行的索引,您可以使用该索引检索该行中单元格的值…包括人员id(如果提供)…例如

void dataGridView1_RowHeaderMouseClick(
object sender, DataGridViewCellMouseEventArgs e)
{
      string personId = dataGridView1.Rows[e.RowIndex].Cells["PersonId"].Value;

      //TODO: implement your own query to retrieve data for that person id
}

请注意,在访问cells collection indexer时,您需要提供正确的列名…
cells[“columnName”]

我不会对解决方案进行任何描述,因为Leo和Arsalan Bhatti已经提出了解决方案。我只是告诉您的代码应该是什么样子以及应该如何编写

string connectionString = consettings.ConnectionString;
using (SqlConnection con = new SqlConnection(connectionString))
{
    try
    {
        con.Open();
        string empID = DailyGV.CurrentRow.Cells["employee_id"].Value.ToString();
        SqlCommand Cmd = con.CreateCommand();
        Cmd.CommandText = "SELECT   Date,Attendance,Remarks FROM dailyattendance where employee_id=@employee_id";
        Cmd.Parameters.Add("@employee_id", SqlDbType.Int).Value = Int32.Parse(empID);
        adap3 = new SqlDataAdapter(Cmd);


        DataTable dt = new DataTable();
        adap3.Fill(dt);
        dataGridView1.DataSource = dt;
        con.Close();
    }    
    catch
    {}
}

虽然您正在传递当前行,但列是什么?根据您从datagridview中选择记录的方式,您应该能够获取值。请尝试datagridview[rownumber][columnnumber]或datagridview.SelectedCells[0]。value.ToString()将有助于'datagridview.SelectedCells[0]。value.ToString()“正在工作@bhupendra patelI听不懂你说的话……请你编辑我的代码来解决它@Arslan好吗?”Bhatti@ShivaDebrown代码已被编辑,请看一看。我尝试了datagridview.CurruntRow,但它不起作用@Arslan Bhatti
try
         {
             cn.Open();
             string query = "select employee_id,Employee_Name,Image_of_Employee from Employee_Details where employee_id='" + dataGridView1.SelectedCells[0].Value.ToString() + "'";
             SqlCommand cmd = new SqlCommand(query, cn);
             SqlDataReader sdr;
             sdr = cmd.ExecuteReader();
             if (sdr.Read())
             {
                 string aa = (string)sdr["employee_id"];
                 string bb = (string)sdr["employee_name"];
                 txtEmployeeID.Text = aa.ToString();
                 txtnameofemployee.Text = bb.ToString();

                 byte[] img=(byte[])sdr["Image_of_employee"];
                 MemoryStream ms=new MemoryStream(img);
                 ms.Seek(0,SeekOrigin.Begin);
                 pictureBox1.Image=Image.FromStream(ms);   cn.Close();
             }


         }
         catch (Exception e1)
         {
             MessageBox.Show(e1.Message);
         }