2013-07-23 2 views
0

Это мое первое приложение Windows Form/SQL. Как обновить изменения таблицы в базе данных при нажатии кнопки «Отправить»?Обновление DataGridView на кнопке Нажмите

При попытке добавить 'dt' datatable он не распознает его, но я не могу понять, как поместить функцию кнопки внутри инструкции try/catch.

Очевидно, что они теперь находятся в двух функциях, но как я могу сделать эту работу одной функцией?

Код приведен ниже.

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Windows.Forms; 
using System.Data.Sql; 
using System.Data; 
using System.Data.SqlClient; 

namespace AccountsApp 
{ 
    public partial class Search : Form 
    { 
     public Search(string searchString, string searchType) 
     { 

      InitializeComponent(); 

      try 
      { 
       if (searchString != null) 
       { 
        string strCon = "Data Source=OMIW2310.orthman.local;Initial Catalog=Accts;Integrated Security=True"; 
        string strSQL = "SELECT  dbo.Account.UserName, dbo.Account.Password, dbo.Account.URL, dbo.Host.HostName, dbo.Service.ServiceName, dbo.ServiceType.SvcTypeName FROM dbo.Account INNER JOIN dbo.Host ON dbo.Account.AccountHost = dbo.Host.HostID INNER JOIN dbo.Service ON dbo.Account.AccountService = dbo.Service.ServiceID INNER JOIN dbo.ServiceType ON dbo.Account.AccountType = dbo.ServiceType.SvcTypeID WHERE " + searchType + "= '" + searchString + "'"; 
        SqlDataAdapter dataAdapter = new SqlDataAdapter(strSQL, strCon); 
        SqlCommandBuilder commandbuilder = new SqlCommandBuilder(dataAdapter); 
        DataTable dt = new DataTable(); 
        dataAdapter.Fill(dt); 
        dbGridView.AutoResizeColumns(DataGridViewAutoSizeColumnsMode.AllCellsExceptHeader); 
        dbGridView.DataSource = dt; 




        textBox1.Text = searchString; 
        textBox2.Text = searchType; 



       } 
      } catch (SqlException ex){ 
       MessageBox.Show(ex.Message); 
      } 
     } 

     private void label1_Click(object sender, EventArgs e) 
     { 

     } 

     private void textBox1_TextChanged(object sender, EventArgs e) 
     { 

     } 

     private void Search_Load(object sender, EventArgs e) 
     { 

     } 

     private void textBox2_TextChanged(object sender, EventArgs e) 
     { 

     } 

     private void button2_Click(object sender, EventArgs e) 
     { 
      Application.Exit(); 
     } 

     private void CancelButton_Click(object sender, EventArgs e) 
     { 
      this.Close(); 
     } 

     private void button1_Click(object sender, EventArgs e) 
     { 
      dbGridView.Update(); 
     } 

     } 
} 

ответ

1

Из того, что я понимаю, вы хотите, чтобы обновить базу данных, используя кнопку (которую я берусь быть button1) представить. Ниже приведены изменения, внесенные в форму с пояснениями в комментариях к коду:

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Windows.Forms; 
using System.Data.Sql; 
using System.Data; 
using System.Data.SqlClient; 

namespace AccountsApp 
{ 
    public partial class Search : Form 
    { 
     //make dataadapter and datatable members so they can also 
     //be used by the submit button method 
     private SqlDataAdapter dataAdapter; 
     private DataTable dt; 

     public Search(string searchString, string searchType) 
     { 

      InitializeComponent(); 

      try 
      { 
       if (searchString != null) 
       { 
        string strCon = "Data Source=OMIW2310.orthman.local;Initial Catalog=Accts;Integrated Security=True"; 
        string strSQL = "SELECT  dbo.Account.UserName, dbo.Account.Password, dbo.Account.URL, dbo.Host.HostName, dbo.Service.ServiceName, dbo.ServiceType.SvcTypeName FROM dbo.Account INNER JOIN dbo.Host ON dbo.Account.AccountHost = dbo.Host.HostID INNER JOIN dbo.Service ON dbo.Account.AccountService = dbo.Service.ServiceID INNER JOIN dbo.ServiceType ON dbo.Account.AccountType = dbo.ServiceType.SvcTypeID WHERE " + searchType + "= '" + searchString + "'"; 
        dataAdapter = new SqlDataAdapter(strSQL, strCon); 
        SqlCommandBuilder commandbuilder = new SqlCommandBuilder(dataAdapter); 
        dt = new DataTable(); 
        dataAdapter.Fill(dt); 
        dbGridView.AutoResizeColumns(DataGridViewAutoSizeColumnsMode.AllCellsExceptHeader); 
        dbGridView.DataSource = dt; 




        textBox1.Text = searchString; 
        textBox2.Text = searchType; 



       } 
      } catch (SqlException ex){ 
       MessageBox.Show(ex.Message); 
      } 
     } 

     private void label1_Click(object sender, EventArgs e) 
     { 

     } 

     private void textBox1_TextChanged(object sender, EventArgs e) 
     { 

     } 

     private void Search_Load(object sender, EventArgs e) 
     { 

     } 

     private void textBox2_TextChanged(object sender, EventArgs e) 
     { 

     } 

     private void button2_Click(object sender, EventArgs e) 
     { 
      Application.Exit(); 
     } 

     private void CancelButton_Click(object sender, EventArgs e) 
     { 
      this.Close(); 
     } 

     private void button1_Click(object sender, EventArgs e) 
     { 

      //dbGridView.Update(); <------ this simply redraws the datagridview. 
      //Has nothing to do with data. 

      //code required for the update (for the submit to work) 

      //make sure the datagriview has ended editing 
      dataGridView.EndEdit(); 

      //call update on the datatable bound to your datagrdiview 
      dataAdapter.Update(dt); 
     } 
    } 
} 
+0

Это сработало! Спасибо, много! – CryptoJones

+0

Рад, что так! :) – CristisS

Смежные вопросы