1

テンプレートにバインドされているObout Gridの列をフィルタリングしようとしています。

バックグラウンド

列のは、特定のオブジェクトの本質的な状態 (名前、資産タグ、シリアル番号、追加情報など) を含むテーブルDataFieldへの外部キー IDです。ユーザーが特定の状態を変更した場合Historyオブジェクト (例: 追加情報) の新しいレコードがHistoryテーブルに追加され、この新しいレコードが前述の外部キーによって参照されます。

列のデータバインディング中に、最新の履歴状態と直前の履歴状態を比較し、変更内容の英語の説明 (「このデバイスの追加情報フィールドが変更されました」など) を返して表示できるようにしています。各行のテキストとして。

問題

グリッド自体は、元のデータバインドの一部であったクライアント側のデータのみをフィルタリングするようです (この場合は、単に履歴レコードへの外部キー ID)。英語の説明に置き換えられているため、列ビューには実際には表示されませんが、この番号でフィルタリングすることはできます。

グリッド マークアップ

<cc1:Grid ID="grdHistory" runat="server" AutoGenerateColumns="False" DataSourceID="dsHistory" AllowFiltering="true">
    <Columns>
        <!-- other columns snipped -->
        <cc1:Column DataField="DeviceHistoryID" HeaderText="Event description"  Width="450" Wrap="true"
            Index="3">
            <TemplateSettings  TemplateId="tplEventDescription" />
        </cc1:Column>
    </Columns>
    <Templates>
        <cc1:GridTemplate ID="tplEventDescription" runat="server">
            <Template>
                 <%# FormatEventDescription(Container.DataItem) %>
            </Template>
        </cc1:GridTemplate>
    </Templates>
</cc1:Grid>

FormatEventDescription(Hashtable Records)フィルタリングしたいオブジェクトの状態への変更の英語版を返す関数です。

質問

列の英語の説明でフィルター処理する方法はありますか? この時点で、洞察 (設計上の欠陥など) を歓迎します。私は彼らのすべてのドキュメントをふるいにかけてみましたが、この問題に関してサポートに連絡しようとしましたが、まだ応答を受け取っていません.

4

1 に答える 1

0

Obout のサードパーティ コントロールについてはよくわかりませんが、.net GridView コントロールからサブクラス化されているようです。もう一度質問するかもしれませんが、代わりに Obout という単語がある場所で gridview を使用してください。明らかに多くの人がその特定のコントロールを使用していないからです。

グリッドのイベントを簡単にスキャンした後、RowDataBoundイベントを使用して必要な変換を実行してみてください。

また、のSelectedイベントを使用しdatasourceてデータを変換できる場合もあります。

以前にデータを最終的な読み取り可能な状態に変換できる場合は、発生する一連のイベントの早い段階でデータをフィルター処理できる場合があります。

于 2009-03-09T20:39:17.487 に答える