只是做一些最近需要帮助的事情我又被困在这里了…我正在使用datagrid从数据库中检索值,我想使用类似的datagrid更新数据库,但是不知怎么的,我遇到了麻烦,有谁能指导我怎么做…..我的意思是,当执行查询并检索所选数据时,如果用户希望更新某些内容,他/她可以在显示值的datagrid中进行更新….

if (textBox1.Text != ""|| textBox1.Text==null)
        {
            textBox3.Enabled = false;
            dateTimePicker1.Enabled = false;
            dateTimePicker2.Enabled = false;
            String txt = textBox1.Text;
            dataGridView1.DataSource = null;
            dataGridView1.Rows.Clear();
            dataGridView1.Refresh();

            OleDbDataAdapter dAdapter = new OleDbDataAdapter("SELECT * FROM [BDetails] WHERE ([BranchCode] = '" + @txt + "')", connParam);
            OleDbCommandBuilder cBuilder = new OleDbCommandBuilder(dAdapter);


             dataTable = new DataTable();
            DataSet ds = new DataSet();

            dAdapter.Fill(dataTable);

            if (dataTable.Rows.Count > 0)
            {
                for (int i = 0; i < dataTable.Rows.Count; i++)
                {
                    dataGridView1.Rows.Add(dataTable.Rows[i][0], dataTable.Rows[i][1], dataTable.Rows[i][2], dataTable.Rows[i][3], dataTable.Rows[i][4], dataTable.Rows[i][5], dataTable.Rows[i][6], dataTable.Rows[i][7], dataTable.Rows[i][8], dataTable.Rows[i][11], dataTable.Rows[i][12]);

                }

            }// end inner if
            else
            {
                MessageBox.Show("No Record Found");
                textBox3.Enabled = true;
                dateTimePicker1.Enabled = true;
                dateTimePicker2.Enabled = true;
            }// end inner else


        }// end outer if
        else
        {
            MessageBox.Show("Please Enter Branch Code");
            bookConn.Close();

        }// end outer else

我很绝望伙计们帮我
Private void按钮8_click(对象发送者,事件参数e)
{
readData();
//saveData();
    }// end function

    void ReadData()
    {
        this.ds = new DataSet();
      //  string connString = "CONNICTION STRING GOES HERE";
        dAdapter = new OleDbDataAdapter("select * from BDetails", connParam);
        this.dAdapter.Fill(this.ds,"[BDetails]");
        this.ds.AcceptChanges();
        //set the table as the datasource for the grid in order to show that data in the grid
        this.dataGridView1.DataSource = ds.DefaultViewManager;
    }// end function

    void SaveData()
    {
        DataSet changes = this.ds.GetChanges();
        if (changes != null)
        {
            //Data has changes.
            //use update method in the adapter. it should update your datasource
            int updatedRows = this.dAdapter.Update(changes);
            this.ds.AcceptChanges();
        }
    }// end function

最佳答案

好吧,亚伯。处理数据的方法有很多种,在很多时候,开发人员倾向于以某种方式工作。从您的问题中,我可以看出使用ado.net可能是新的,因此我建议您阅读一些有关在.net中使用数据的内容(数据表、数据集、数据网格、数据适配器、数据绑定等)。等)
我认为(根据我短暂的经验)从数据源读写数据的最简单方法是使用dataadapter将数据读入数据集,然后将数据集设置为gridview的数据源,用户可以在其中进行编辑。要写回更改,只需在适配器中使用update方法。
这是一个示例代码

DataSet ds;
OleDbDataAdapter dataAdapter;
void ReadData()
    {
        this.ds = new DataSet();
        string connString = "CONNICTION STRING GOES HERE";
        this.dataAdapter = new OleDbDataAdapter("QUERY GOES HERE", connString);
        this.dataAdapter.Fill(this.ds, "TABLE1");
        this.ds.AcceptChanges();
        //set the table as the datasource for the grid in order to show that data in the grid
        this.dataGridView1.DataSource = ds.DefaultViewManager;
    }

    void SaveData()
    {
        DataSet changes = this.ds.GetChanges();
        if (changes != null)
        {
            //Data has changes.
            //use update method in the adapter. it should update your datasource
            int updatedRows = this.dataAdapter.Update(changes);
            this.ds.AcceptChanges();
        }
    }

请参阅以下内容,因为它提供了一个关于使用datagrid控件的较长示例
http://www.codeproject.com/Articles/9986/Using-the-DataGrid-Control
有关datatable、datasets和datagrids的一些简介,请参见
http://www.codeproject.com/Articles/6179/A-Practical-Guide-to-NET-DataTables-DataSets-and-D

10-01 20:51
查看更多