0

こんにちは、私はDataGridViewを持っています。その中にはFullNameVoteCountの 2 つの列があります。データベースの変更のために、DataGridView を更新したいと考えています。フォームを閉じたりボタンをクリックしたりせずに DatagridView を更新するにはどうすればよいですか? 出来ますか?

これが私のコードです:

    private void President()
    {
        sc.Open();
        cmd = new SqlCommand("SELECT (LastName + ', ' + FirstName + ' ' + MiddleName) as FullName,Vcount as VoteCount FROM TableVote WHERE Position='President'", sc);

        try
        {
            _da = new SqlDataAdapter();
            _da.SelectCommand = cmd;
            DataTable _dt = new DataTable();
            _da.Fill(_dt);
            BindingSource bs = new BindingSource();
            bs.DataSource = _dt;
            PresDG.DataSource = bs;
            _da.Update(_dt);

            PresDG.ColumnHeadersDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
            PresDG.Columns["FullName"].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
            PresDG.Columns["VoteCount"].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
            PresDG.Columns["VoteCount"].Width = (100);
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
        }
        finally
        {
            sc.Close();
        }
    }
4

6 に答える 6

1

完全な DataGridView を再入力する必要があると思います。

方法:

  1. 特定の間隔で、Microsoft Tick-Class でそれを行います。
  2. データベースの変更を確認するには、Microsoft Tick-Class を使用します。変更がある場合は、完全な DataGridView を再入力します。
于 2013-10-29T07:16:25.530 に答える
1

データを更新したいときはいつでもこの関数を呼び出してください。

YourGrid.DataSource = Refresh("SELECT...");

private BindingSource Refresh(string sql)
{
    try
    {
        using (var da = new SqlDataAdapter(sql, new SqlConnection(Properties.Settings.Default.ConnectionString)) { FillLoadOption = LoadOption.Upsert })
        {
            da.SelectCommand.Connection.Open();
            da.Fill(dataSet.YourTable);
        }
    }
    catch(Exception ex) { MessageBox.Show(ex.Message); }

    return new BindingSource(dataSet, "YourTable");
}
于 2013-10-29T07:54:17.153 に答える
0

タイマーを使用してこれを行う

string connectionString = "SERVER=" + server + ";" + "DATABASE=" +
database + ";" + "UID=" + uid + ";" + "PASSWORD=" + password + ";";

MySqlConnection conn = new MySqlConnection(connectionString);
MySqlDataAdapter adptr = new MySqlDataAdapter("Select * FROM " + tableName, conn);
DataTable tabloSql = new DataTable();
adptr.Fill(tabloSql);
dataGridView1.DataSource = tabloSql;

注: プログラムが DataTable に変更を加えない場合は、これを行ってください。テーブルを更新するときにデータテーブルに変更を加えると、データテーブルの変更は削除されます

于 2013-10-29T07:51:57.457 に答える
0

SQL サーバー CLR 統合を使用できます。 ここ ここ

少し読んだ後、詳細を投稿しますが、それまでの方向性を示してくれるか、解決策が見つかることを願っています.

更新 トリガー アプリケーションを作成し、そのトリガー アプリケーションを使用して、 gridview をバインドするメソッドを呼び出すことができます。 これは、トリガーを作成して実装する良い例です

CLR SP

于 2013-10-29T07:34:39.383 に答える