此问题与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;
}
这是处理数据的最佳方式吗?