2

この質問は、ASP.Net 3.5およびC#に関連しています。

たくさんの列を含むデータベースからRSSフィードを作成しています。

特定のノードでデータをフォーマットする必要があり、インラインでフォーマットするのは非常に面倒です。

すべてのパラメーターを個別にサブルーチンに渡すことができることを認識しています

    <%# formatAddress(Container.DataItem["propertyName"],
        Container.DataItem["propertyNumber"], ... ) %>

これらの列は最大20個になるので、行全体を渡したいと思います。

    <%# formatAddress(Container.DataItem) %>

これは理想的であり、コードビハインドで必要な列を選択できます。

    protected string FormattedAddress(object row)
        {

        DataRowView data = (DataRowView)row;

        StringBuilder Address = new StringBuilder();
        string Postcode = data["propertyPostcode"];
        ...
        return Address.ToString();
    }

タイプ「System.Data.Common.DataRecordInternal」のオブジェクトをタイプ「System.Data.DataRowView」にキャストできませんというエラーが発生します。

以前は、保護された文字列FormattedAddress(DataRowView row)を使用していましたが、それも機能しませんでした。

手がかりはありますか?

4

1 に答える 1

3

最終的に、DbDataRecordにキャストする必要があることに気付いたいくつかの例を見つけました。

まだ<%#formattedAddress(Container.DataItem)%>を渡していますが、関数は次のようになっています。

    protected string FormattedAddress(object dataItem)
    {
        DbDataRecord data = (DbDataRecord)dataItem;

        string Postcode = data.GetValue(
                          data.GetOrdinal("propertyPostcode")).ToString();
        ...    
        return NicelyFormattedAddress;
    }

これはデータを処理するための最良の方法ですか?

于 2012-08-22T08:24:09.233 に答える