日期:2014-05-18  浏览次数:20867 次

Winform 查询信息在dataGridView里显示再修改返回数据库如何实现
VS2005 Winforms中使用DataGridView控件,添加bottom键查询信息,在DataGridView里显示,修改查询出来的信息,点击更新按钮后返回数据库,如何实现这个功能。
数据在DataGridView里直接显示(Form1_Load)可以更新,查询结果显示在DataGridView里,对查询结果无法更新。
各位能帮忙给个代码吗?

------解决方案--------------------
绑定数据单独写个方法,在更新后再次调用这个方法进行重新绑定,即可。
------解决方案--------------------
WinForm结构:
DataSet ds = null;
ds = //数据库中取出来的结果集
DataGridView.DataSource = ds.Tables[0];
Web结构:
DataSet ds = null;
ds = //数据库中取出来的结果集
DataGridView.DataSource = ds.Tables[0];
DataGridView.DataBind();
------解决方案--------------------
DataSet ds = new DataSet();
SqlDataAdapter sda;

SqlCommandBuilder scb = new SqlCommandBuilder(sda);
sda.Update(ds);
this.dataGridView1.DataSource = ds.Tables[0];
 
 

------解决方案--------------------
DataSet绑定到bindingsource,bindingsource绑定到DataGridView,然后就很方便更新了
------解决方案--------------------
dataGridView 的事件用有CellEndEdit 方法,在这个方法中获取修改的单元格的值
value = dataGridView1.Rows(e.RowIndex).Cells(e.ColumnIndex).Value.ToString
然后写修改数据库的方法。当你在查询的时候,重新绑定一下DataGridView,DataGridView1.DataSource = dt //DataTable对象
------解决方案--------------------
LZ我给个完整的例子给你,我自己做的,可以更新,可以结贴给分啦
 public partial class HmdFrom : Form
{
DbConn conn = null;
int strid; //记录黑名单信息行id
SqlDataAdapter Adapter; //初始化Adapter对象
DataSet ds = new DataSet(); //绑定协议单位信息DataSet
String mm = "";
public HmdFrom()
{
InitializeComponent();
}

private void HmdFrom_Load(object sender, EventArgs e)
{
button1.Enabled = false;
String sql = "select * from hmd where 1=1";
show(sql);
}

private void show(String sql)
{
try
{
conn = new DbConn();
ds.Clear();
Adapter = conn.DataGridViewBind(sql);
Adapter.Fill(ds);
DataTable dataTable = ds.Tables[0];

dataGridView1.DataSource = dataTable.DefaultView;

//设置dataGridView2不同的样式 
this.dataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
this.dataGridView1.DefaultCellStyle.SelectionBackColor = Color.SkyBlue;
this.dataGridView1.AllowUserToAddRows = true;
}
catch (SqlException ex)
{
MessageBox.Show(ex.Message);
}
}
private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
{
strid = e.RowIndex;
}
//刷新datagridview1里的数据
private void button1_Click(object sender, EventArgs e)
{
if (dataGridView1.Rows.Count != 0)
{
show(mm);
}
}
//保存黑名单里的数据
private void button2_Click(object sender, EventArgs e)
{
button1.Enabled = true;
try
{
if (this.dataGridView1.SelectedRows[0].Cells[1].Value.ToString() != "" && this.dataGridView1.SelectedRows[0].Cells[1].Value != null)
{
try
{
SqlCommandBuilder commBuilder = new SqlCommandBuilder();
commBuilder.DataAdapter = Adapter;