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 回答