效果图
图一:datagridview中数据,单据目前选中的这条
图二:抓取datagridview在的数据显示到另一个页面中的textbook
代码:
datagridview的窗体界面,首先在该界面放置button和datagridview控件
1、点击button筛选按钮中进行绑定数据库,写sql查询语句,然后显示在datagridview中、、、、、点击datagridview在属性中找到SelectionMode,将其设置为FullRowSelect
private void button1_Click(object sender, EventArgs e)
{
string htbh = textBox1.Text.Trim();
string khm = textBox2.Text.Trim();
string str = "select id, orderid as 单据编号,contractid as 合同编号,date as 日期,company as 公司,project as 项目名称,sub as 分公司 ,con_cate as 合同类别,kh_type as 客户类别,kh_cate as 客户类型,seller as 业务员,cost as 钢材,area as 地区,place as 产地,tax as 税率,amount as 金额,examine as 审核状态,qj as 期间 from[dbo].[Contract_h] where contractid like '%" + htbh + "%' and company like '%" + khm + "%'";
da = new SqlDataAdapter(str, SQL);
dt = new DataTable();
da.Fill(dt);
dataGridView1.DataSource = dt;
dataGridView1.Columns["id"].Visible = false;
}
2、单据datagridview事件,找到 CellDoubleClick 鼠标双击事件,鼠标双击该事件,进行代码编辑
private void dataGridView1_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
{
int index = dataGridView1.CurrentRow.Index; //获取选中行的行号
kucunyanzheng kucunyanzheng = new kucunyanzheng();
//这里cell后面数字是上面select中需要显示的字段的索引值,从0开始,你需要什么就条件应该索引就好了,下面的代码就是将datagridview在选中行的值传递给下一个窗体中的构造函数
kucunyanzheng.a = dataGridView1.Rows[index].Cells[1].Value.ToString();
kucunyanzheng.b = dataGridView1.Rows[index].Cells[2].Value.ToString();
kucunyanzheng.c = dataGridView1.Rows[index].Cells[4].Value.ToString();
kucunyanzheng.d = dataGridView1.Rows[index].Cells[5].Value.ToString();
kucunyanzheng.ShowDialog();
this.Dispose();//释放资源
this.Close();//关闭当前界面
}
必须要释放资源这里
textbook控件的窗体界面 在该界面中拖放textbook控件
1、在第二个有textbook控件的界面中定义构造函数,用于接受上个页面选中行所需要显示的字段
public string a { get; set; }
public string b { get; set; }
public string c { get; set; }
public string d { get; set; }
public string e { get; set; }
2、在第二个有textbook控件的界面中双击窗体空白处,在load里面编辑代码,将构造函数的数据传递给textbook控件显示
private void kucunyanzheng_Load(object sender, EventArgs e)
{
txtHtbh.Text = a;
txtDdbh.Text = b;
txtGsm.Text = c;
txtXm.Text = d;
}
OK这样就完成了