如何在选择数据网格视图单元格或列时获取数据
本文关键字:数据 单元格 获取 视图 网格 选择 数据网 | 更新日期: 2023-09-27 18:21:40
我在Windows窗体应用程序中有两个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];
}
我正在尝试上面的代码。但它不起作用。
我不太确定DailyGV.CurrentRow
是什么,但基本上你可以使用RowHeaderMouseClick
。。。请参阅MSDN文档。要使用它,请在初始化表单组件时将事件处理程序挂接到它(您也可以使用VS设计器…
dataGridView1.RowHeaderMouseClick += dataGridView1_RowHeaderMouseClick;
void dataGridView1_RowHeaderMouseClick(
object sender, DataGridViewCellMouseEventArgs e)
{
}
每当您在DataGridView
控件中选择行标头时,就会触发此事件处理程序,该控件将通过DataGridViewCellMouseEventArgs
类的实例传递有关事件的信息(请参阅MSDN文档)。此参数具有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"]
我不会对解决方案进行任何描述,因为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
{}
}
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);
}
在SELECT查询中将当前行的索引作为员工id传递。传递所选记录的员工id。然后它就会正常工作。