【问题标题】:How to get the data when I select a datagridview cell or column选择datagridview单元格或列时如何获取数据
【发布时间】:2014-09-12 05:43:43
【问题描述】:

我在 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];

}

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

【问题讨论】:

  • 虽然您传递的是当前行,但该列是什么?根据您从 datagridview 中选择记录的方式,您应该能够获得该值。尝试 datagridview[rownumber][columnnumber] 或 dataGridView.SelectedCells[0].Value.ToString() 会有所帮助
  • 'dataGridView.SelectedCells[0].Value.ToString()' 正在工作@bhupendra patel

标签: c# winforms datagridview


【解决方案1】:

我不太确定DailyGV.CurrentRow 是什么,但基本上你可以使用RowHeaderMouseClick...见MSDN documentation。要使用它,请在初始化表单组件时将事件处理程序挂钩(您也可以使用 VS 设计器...

dataGridView1.RowHeaderMouseClick += dataGridView1_RowHeaderMouseClick;

void dataGridView1_RowHeaderMouseClick(
object sender, DataGridViewCellMouseEventArgs e)
{
}

每次您在DataGridView 控件中选择行标题时都会触发此事件处理程序,该控件将通过DataGridViewCellMouseEventArgs 类的实例传递有关事件的信息(请参阅MSDN documentation)。此参数有一个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["columnName"]

【讨论】:

    【解决方案2】:

    我不会对解决方案进行任何描述,因为 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
        {}
    }
    

    【讨论】:

      【解决方案3】:
      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);
               }
      

      【讨论】:

        【解决方案4】:

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

        【讨论】:

        • 我听不懂你说什么...请你编辑我的代码来解决它@Arslan Bhatti
        • @ShivaDebrown 代码已修改,请查看。
        • 我试过 datagridview.CurruntRow 但它不起作用@Arslan Bhatti
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-09-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多