1

現在のデータソースを新しいデータテーブルにマージすることで、データセットを毎回作成(ループ)せずに、データソースに複数のデータテーブルを追加したいと思います。

これは私のコードです:

' Those table are the same but have different data
' Tables() array, it's an example

For Each oTable As System.Data.DataTable In Tables
    DisplayResult(oTable, ColumnsAreCreated)
Next

次に、結果をグリッドに表示します。

Private Function DisplayResults(ByVal oTable As System.Data.DataTable, ByRef ColumnsAreCreated As Boolean) As Boolean

    If oTable.Rows.Count > 0 Then
        Dim compt As Integer = 0

        If Not ColumnsAreCreated Then
            Dim NewColumn As DevExpress.XtraGrid.Columns.GridColumn
            For Each oColumn As DataColumn In oTable.Columns
                NewColumn = grdv.Columns.AddField(oColumn.ColumnName)
                NewColumn.OptionsColumn.ReadOnly = True
                NewColumn.Visible = True
                NewColumn.VisibleIndex = compt
                compt += 1
            Next
            ColumnsAreCreated = True
            ' I want to do something like : grdctrl.DataSource += oTable
            grdctrl.DataSource = oTable

            grdv.OptionsView.ColumnAutoWidth = False
            grdv.BestFitColumns()
        End If
    End If

    Return True
End Function

現在のデータを毎回消去したくないので、グリッド内の現在のデータソースを次のデータテーブルと1つずつ連結します。

データセットを作成し、それにデータテーブルを入れて、最後にグリッドコントロールにデータセットを提供したくありません。

データセットを作成せずにそれを行う方法はありますか?

4

2 に答える 2

0

私があなたを正しく理解しているなら、あなたはすべての結果を「マージ」したいですよね?単一のテーブルのグリッドにバインドする前に、単純にそれを実行しないのはなぜですか?バインド後にマージする場合は、PGridをデータソースとメンバー「Table」にバインドしてから、Table.Merge(AddedTable)を使用します。これにより、グリッドも自動的に更新されます。テーブルにキーを設定しないようにしてください。設定しないと、定期的にマージされます(値が異なり、追加されていない場合は値が更新されます)質問を理解したことを願っています:)

于 2012-08-09T09:19:29.143 に答える
0
protected void Page_Load(object sender, EventArgs e)
{
    if (!this.IsPostBack)
    {
        string constr = ConfigurationManager.ConnectionStrings["constr"].ConnectionString;
        string query = "SELECT TOP 10 ContactName, City, Country FROM Customers;";
        query += "SELECT TOP 10 (FirstName + ' ' + LastName) EmployeeName, City, Country FROM Employees";

        using (SqlConnection con = new SqlConnection(constr))
        {
            using (SqlCommand cmd = new SqlCommand(query))
            {
                using (SqlDataAdapter sda = new SqlDataAdapter())
                {
                    cmd.Connection = con;
                    sda.SelectCommand = cmd;
                    using (DataSet ds = new DataSet())
                    {
                        sda.Fill(ds);
                        gvCustomers.DataSource = ds.Tables[0];
                        gvCustomers.DataBind();
                        gvEmployees.DataSource = ds.Tables[1];
                        gvEmployees.DataBind();
                    }
                }
            }
        }
    }
}

このコードは完全に実行されているコードであり、お役に立てば幸いです。

于 2016-09-02T05:33:02.627 に答える