传递整个Container.DataItem行到代码后台

3
这个问题涉及到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'。

之前,我使用的是 protected string FormattedAddress(DataRowView row),但那也没有起作用。

有什么线索吗?

1个回答

4
最终我找到了几个例子,让我意识到我应该将类型转换为DbDataRecord。
我仍然传递 <%# formattedAddress(Container.DataItem) %> ,但我的函数现在如下所示:
    protected string FormattedAddress(object dataItem)
    {
        DbDataRecord data = (DbDataRecord)dataItem;

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

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接