0

データ ソースとして DataTable に接続されているグリッドに、限られた数の列を表示したいと考えています。私が見つけた例では、プロパティ ExtendedProperties を使用して、列ヘッダーの表示方法、順序、選択する列を定義しています。ただし、これを使用すると、表示される列、順序、および番号は元の DataTable と同じです。

誰かが私が間違っていることを見ることができますか?

これはコードのサブセットです。それはただの顧客のテーブルです:

// initialize db connection variables
        string conn = GetConnectionString();

        // load some tables
        string[] tables = "Customers, Orders, Order Details, Products, Employees, Shippers".Split(',');
        foreach (string tableName in tables)
        {
            FillTable(_ds, tableName, conn);
        }
dt = _ds.Tables["Customers"];
// re-arrange the columns on the customer table
        //
        dt.ExtendedProperties.Add("ShowColumns", new string[] {
                                                                  "CustomerID, Customer",
                                                                  "OrderCount, Orders",
                                                                  "CompanyName, Company",
                                                                  "ContactName, Contact",
                                                                  "Phone",
                                                                  "City",
                                                                  "Region",
                                                                  "Country",
        });

        // show customers to begin with
        _flex.SetDataBinding(_ds, "Customers");

列を設定する方法:

    // customize grid display to show selected columns, captions, formats, and data maps
    void _flex_SetupColumns(object sender, System.EventArgs e)
    {
        // get grid that was just bound
        C1FlexDataTree grid = sender as C1FlexDataTree;
        if (grid == null || grid.DataSource == null)
            return;

        // get source DataTable
        CurrencyManager cm = (CurrencyManager)BindingContext[grid.DataSource, grid.DataMember];
        DataTable dt = ((DataView)cm.List).Table;

        // apply custom column order, captions, format
        string[] columns = dt.ExtendedProperties["ShowColumns"] as string[];
        if (columns != null)
        {
            SetupColumns(grid, columns);
        }

        // apply custom data maps
        foreach (Column gridColumn in grid.Cols)
        {
            DataColumn dataColumn = dt.Columns[gridColumn.Name];
            if (dataColumn == null) continue;
            gridColumn.DataMap = dataColumn.ExtendedProperties["DataMap"] as IDictionary;
            if (gridColumn.DataMap != null)
            {
                gridColumn.TextAlign = TextAlignEnum.LeftCenter;
            }
        }

        // all done, autosize to show mapped data
        if (grid.AutoResize)
        {
            grid.AutoSizeCols(12);
        }
    }

メソッド「SetupColumns」は呼び出されません。

4

1 に答える 1

0

私はこれを理解しました。私の問題は、グリッド内でイベントを定義していなかったため、発生していなかったことです。私がそれをしたら、それはうまくいきました。

于 2014-08-01T17:42:22.717 に答える