1

私は C# の初心者なので、問題に正しく対処できるかどうかわかりません。ご容赦ください。3 つの DataGridViews ( datagridview1datagridview2datagridview3) があります。すべてが同じウィンドウにありますが、別のタブにあります (タブ コントロールがあります)。

それぞれの目的はDataGridView、データベースから 3 つのテーブルのデータを表示することです。ボタンをクリックするたびに、データが取得されます。しかし、ここに私の問題がdatagridview1あります。ボタンをクリックした後にデータを表示すると、次のタブに移動して取得ボタンをもう一度クリックすると、datagridview2表示されたデータが に表示されdatagridview1ます。に同じことdatagridview3

DataTableこれらの DataGridViews のデータ ソースとして使用しています。そして、私のスクリプトのどこかでクエリが変更されるので、クエリに問題はないと思います。私が見つけたのはDataTable、クエリが既に変更されていても、データがクリアされないことです。

私はWinFormsを使用しています。助けてください。ありがとう。


datagridview をデータソースにバインドする際に使用したコードは次のとおりです。

currentdatagrid.DataSource = execute.InitConn2(クエリ、CompleteTablename);

注: 「execute.InitConn2(query, CompleteTablename)」はデータテーブルを返します。

4

1 に答える 1

3

次の例のようなことを試して、うまくいくかどうかを確認してください。静的メソッド GetData は、毎回新しいデータ テーブルを返します。独自の接続文字列で SqlConnection を更新する必要があります。

public static void Main(string[] args)
        {
            DataGrid dg1 = new DataGrid();
            DataGrid dg2 = 新しい DataGrid();
            DataGrid dg3 = new DataGrid();

            dg1.DataSource = GetData("select * from table1");
            dg1.DataBind();

            dg2.DataSource = GetData("select * from table2");
            dg2.DataBind();

            dg3.DataSource = GetData("select * from table3");
            dg3.DataBind();
        }

        public static DataTable GetData(string sqlQuery) {
            試す
            {
                DataTable dt = 新しい DataTable();

                // ここで接続を設定します
                SqlConnection conn = new SqlConnection("");

                // 接続でクエリを実行
                SqlDataAdapter adapt = 新しい SqlDataAdapter(sqlQuery, conn);

                // 接続を開き、データを入力して閉じます
                conn.Open();
                適応します。塗りつぶし (dt);
                conn.Close();

                dt を返します。
            }
            キャッチ (例外例) {
                元を投げます。
            }
        }

データセットを使用するには、次を使用します。

public static void Main(string[] args)
        {
            DataGrid dg1 = new DataGrid();
            DataGrid dg2 = 新しい DataGrid();
            DataGrid dg3 = new DataGrid();

            DataSet ds = GetData(@"select * from table1;
                                        table2 から * を選択します。
                                        select * from table3");

            dg1.DataSource = ds.Tables[0];
            dg1.DataBind();

            dg2.DataSource = ds.Tables[1];
            dg2.DataBind();

            dg3.DataSource = ds.Tables[2];
            dg3.DataBind();
        }

        public static DataSet GetData(string sqlQuery) {
            試す
            {
                DataSet ds = 新しい DataSet();

                // ここで接続を設定します
                SqlConnection conn = new SqlConnection("");

                // 接続でクエリを実行
                SqlDataAdapter adapt = 新しい SqlDataAdapter(sqlQuery, conn);

                // 接続を開き、データを入力して閉じます
                conn.Open();
                適応.塗りつぶし(ds);
                conn.Close();

                ds を返します。
            }
            キャッチ (例外例) {
                元を投げます。
            }
        }
于 2013-07-16T09:26:01.637 に答える