将整个Container.DataItem行传递给代码隐藏



此问题与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行),但这也不起作用。

有线索吗?

最终发现了几个例子,这些例子让我意识到我应该转换到DbDataRecord。

我还在通过<%#formattedAddress(Container.DataItem)%>,但我的函数现在如下:

    protected string FormattedAddress(object dataItem)
    {
        DbDataRecord data = (DbDataRecord)dataItem;
        string Postcode = data.GetValue(
                          data.GetOrdinal("propertyPostcode")).ToString();
        ...    
        return NicelyFormattedAddress;
    }

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

相关内容

  • 没有找到相关文章

最新更新