【问题标题】:Passing entire Container.DataItem row to code behind将整个 Container.DataItem 行传递给后面的代码
【发布时间】:2012-08-16 18:07:51
【问题描述】:

这个问题与 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),但这也没有用。

有什么线索吗?

【问题讨论】:

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


    【解决方案1】:

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

    我仍在传递 但我的函数现在如下:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-03-19
      • 2014-04-05
      • 2014-12-23
      • 1970-01-01
      • 1970-01-01
      • 2015-01-06
      • 2011-09-05
      • 1970-01-01
      相关资源
      最近更新 更多