2013-08-06 74 views
3

我有一個桌面應用程序項目。在入口頁面上,DataGridView顯示數據庫中的現有項目。現在,當我輸入一個新項目時,我想直接將它插入DataGridView。意思是,我想重新加載/刷新DataGridView。我的數據庫在MS Access中。如何刷新綁定到已更新的Access數據庫表的DataGridView?

private DataTable GetData() 
{ 
    DataTable dt = new DataTable(); 
    //using (SqlConnection con = new SqlConnection(conn)) 
    using (OleDbConnection con=new OleDbConnection(conn)) 
    { 
     OleDbCommand cmd = new OleDbCommand("Select ID,Name from GroupDetails where comID='" + label1.Text + "'", con); 
     //SqlCommand cmd = new SqlCommand("Select ID,Name from GroupDetails where comID='" + label1.Text + "'", con); 
     con.Open(); 
     //SqlDataAdapter ad = new SqlDataAdapter(cmd); 
     OleDbDataAdapter ad = new OleDbDataAdapter(cmd); 
     DataSet ds = new DataSet(); 
     ad.Fill(ds); 
     dt = ds.Tables[0]; 
     return dt; 
    } 
} 

private void btnSave_Click(object sender, EventArgs e) 
{ 
    //SqlConnection con = new SqlConnection(conn); 
    OleDbConnection con = new OleDbConnection(conn); 
    con.Open(); 
    //SqlCommand cmd; 
    try 
    { 
     string query = "insert into GroupDetails (ID,Name) values(@ID,@Name)"; 
     // cmd = new SqlCommand(query,con); 
     OleDbCommand cmd = new OleDbCommand(query, con); 
     cmd.Parameters.AddWithValue("@ID",txtID.Text); 
     cmd.Parameters.AddWithValue("@Name",txtName.Text); 
     int i = cmd.ExecuteNonQuery(); 
     if(i!=0) 
     { 
      dataGridGroup.DataSource = GetData(); 
     } 
    } 
    catch (Exception ex) 
    { 
     ex.Message.ToString(); 
    } 
    finally 
    { 
     con.Close(); 
    } 
} 

[注:當我使用一個SQL數據庫,然後正常工作]

+0

電話無論哪個LOADN和方法的數據綁定到網格形式的保存方法,該方法中應該引用網格 – Kurubaran

+0

@Coder ::當我使用SQL Server時,此代碼正在工作。但是當我使用訪問數據庫它從第二次工作。意思是讓我輸入5個數據。 ID是1,2,3,4,5。當我插入1時,它不需要任何東西。當我輸入2時,顯示1的數據。當我插入3它顯示2的數據。這意味着它從第二次開始工作。 –

回答

2

我要去有點obvios但你說:「讓我不得不進入5個數據ID是1,2,3,4,5當我插入1時,它不會佔用任何東西,當我輸入2時,它顯示1的數據,當我插入3時,它顯示2的數據,這意味着它從第二次開始工作。

我說:當你看到這樣的行爲立即就知道這是一個定時問題

在這種特殊情況下

我認爲,如果你先關閉您的連接,然後調用GetData()它應該工作:

private void btnSave_Click(object sender, EventArgs e) 
{ 
    //SqlConnection con = new SqlConnection(conn); 
    OleDbConnection con = new OleDbConnection(conn); 
    int i = 0; 
    con.Open(); 
    //SqlCommand cmd; 
    try 
    { 
     string query = "insert into GroupDetails (ID,Name) values(@ID,@Name)"; 
     // cmd = new SqlCommand(query,con); 
     OleDbCommand cmd = new OleDbCommand(query, con); 
     cmd.Parameters.AddWithValue("@ID",txtID.Text); 
     cmd.Parameters.AddWithValue("@Name",txtName.Text); 
     i = cmd.ExecuteNonQuery(); 
    } 
    catch (Exception ex) 
    { 
     ex.Message.ToString(); 
    } 
    finally 
    { 
     con.Close(); 

     if(i!=0) 
     { 
      dataGridGroup.DataSource = GetData(); 
     } 
    } 
} 
+0

這看起來像正確的答案:) –

+0

@No想法名稱::謝謝你的回答。它工作正常。 –