C#:直接在DataGridView控件中修改數據


    在DataGridView控件中修改數據,主要用到DataTable的ImportRow方法和DataAdapter對象的Update方法。實現的過程是通過DataTable的ImportRow方法將更改後的數據複製到一個DataTable中,然後通過DataAdapter對象的Update方法,將DataTable中的數據更新到數據庫中。

    ImportRow方法用於將DataRow複製到DataTable中,且保留任何屬性設置以及初始值和當前值。

    語法如下:

Public void ImportRow( DataRow row )

其中,row是要導入的DataRow。

   

    默認情況下,用戶可以通過在當前的DataGridView文本框單元格中輸入或按F2鍵來編輯該單元格的內容。在控件單元格中編輯內容的前提是DataGridView控件已啓用以及單元格、行、列和控件的ReadOnly屬性都設置爲false。ReadOnly屬性用於指示用戶是否可以編輯DataGridView控件的單元格。

 

   下面演示如何在DataGridView控件中直接修改數據,然後進行批量更新。

public partial class Form1 : Form{

    public Form1(){

       InitializeComponent();

    }

    SqlConnection sqlCon;     //聲明一個SqlConnection變量

    SqlDataAdapter adapter; //聲明一個SqlDataAdapter變量

 

    //--------------連接數據庫,綁定DataGridView控件-----------------

    private voidbutton1_Click(object sender, EventArgs e){

       //實例化SqlConnection變量conn,連接數據庫

       sqlCon =new SqlConnection("server=.;database=db_16;uid=sa;pwd=");

       //實例化SqlDataAdapter對象

       SqlDataAdapter sda = newSqlDataAdapter("select* from tb_emp", sqlCon);

       //實例化DataSet對象

       DataSet ds = new DataSet();

       //使用SqlDataAdapter對象的Fill方法填充DataSet

       sda.Fill(ds);

       //設置dataGridView1控件的數據源

       dataGridView1.DataSource = ds.Tables[0];

       //禁止顯示行標題

       dataGridView1.RowHeadersVisible = false;

       //使用for循環設置控件的列寬

       for (int i = 0; i< dataGridView1.ColumnCount;i++ ){

           dataGridView1.Columns[i].Width = 84;

        }

        //禁用按鈕

       button1.Enabled = false;

       //將控件設置爲只讀

       dataGridView1.Columns[0].ReadOnly = true;

    }

 

    //-----------------建立一個DataTable的方法-----------------------

    private DataTabledbconn(string strSql){

        sqlCon.Open();    //打開連接

        //實例化SqlDataAdapter對象

        this.adapter = new SqlDataAdapter(strSql, sqlCon);

       //實例化DataTable對象

        DataTable dtSelect = newDataTable();

       //使用Fill方法填充DataTable對象

        int rnt = this.adapter.Fill(dtSelect);

       //關閉連接

        sqlCon.Close();

       //返回DataTable對象

        returndtSelect;

    }

 

    //-------------更新數據庫----------------------------

    private BooleandbUpdate(){

       //聲明SQL語句

        string strSql = "select* from tb_emp";

       //實例化DataTable

        DataTable dtUpdate = newDataTable();

        //創建一個DataTable

        dtUpdate= this.dbconn(strSql);

       //調用Clear方法

        dtUpdate.Rows.Clear();

        //實例化DataTable

        DataTable dtShow = newDataTable();

        dtShow =(DataTable)this.dataGridView1.DataSource;

        //使用for循環遍歷行

        for (int i = 0; i< dtShow.Rows.Count; i++){

           //使用ImportRow方法複製dtShow中的值

            dtUpdate.ImportRow(dtShow.Rows[i]);

        }

        try{

            this.sqlCon.Open();  //打開連接

            SqlCommandBuilder CommandBuiler;   //聲明SqlCommandBuilder變量

           CommandBuiler = new SqlCommandBuilder(this.adapter);

            this.adapter.Update(dtUpdate);   //調用Update方法更新數據庫

            this.sqlCon.Close();  //關閉連接

        }

        catch (Exceptionex){

            MessageBox.Show(ex.Message.ToString());

            return false;

        }

        //提交更改

       dtUpdate.AcceptChanges();

        return true;

    }

 

    //--------------------修改DataGridView控件中選中單元格的值-------------------

    private voidbutton2_Click(object sender, EventArgs e){

        if (dbUpdate())

        {

            MessageBox.Show("修改成功!");

        }

    }

}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章