将整个Container.DataItem行传递给后面的代码

时间:2012-08-21 11:46:01

标签: c# exception .net-3.5 itemtemplate datarowview

这个问题与ASP.Net 3.5和C#

有关

我正在从包含大量列的数据库构建RSS Feed。

我需要格式化特定节点中的数据,并且内联它会非常混乱。

我知道我可以将所有参数分别传递给子程序

    <%# 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行),但这也不起作用。

任何线索?

1 个答案:

答案 0 :(得分:2)

最终找到了几个让我意识到我应该投射到DbDataRecord的例子。

我还在传递&lt;%#formadedAddress(Container.DataItem)%&gt;但我的功能现在如下:

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

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

这是处理数据的最佳方式吗?