【发布时间】:2010-12-18 20:41:07
【问题描述】:
假设我在后面的代码中有一个这样的数组:
public static string[] fields = new string[]{"field1", "field2", "field3", "field4"};
我想在数据绑定时使用这个数组来检索gridview中的字段,如下所示:
<%# Eval("Field1")%>
<%# Eval("Field2")%>
<%# Eval("Field3")%>
<%# Eval("Field4")%>
但是,我很难弄清楚如何遍历我的数组(字段)以生成上述代码。它不想像这样解析数据绑定服务器标签 () 中的任何运算符:
<%# foreach (string field in fields)
{
Eval(field);
}
%>
而且我找不到在常规服务器标签中重现数据绑定行为的方法:
<% foreach (string field in fields)
{
Response.Write(DataBinder.Eval(object, field);
}
%>
databinder.eval 方法采用一个容器对象,我不确定我是否可以在常规数据绑定标签之外访问它。我也尝试使用常规服务器标签来生成围绕数据绑定代码的迭代代码,但它无法访问迭代的变量。
编辑:
我应该更清楚一点,最后我希望值最终出现在我的页面上,而不是字段名称本身。我的数据库可能类似于:
Field1 | Field2 | Field3 | Field4
| | |
value1 | value2 | value3 | value4
当一切都说完了,我的页面应该是这样的:
value1
value2
value3
value4
但字段数组是动态的,并且可能因对象而异,因此静态访问数组中的每个索引将不起作用。
【问题讨论】:
-
我完全误解了这个问题,哦! (而且看起来我不是唯一一个。)所以您想选择哪些字段动态绑定到另一个数据绑定控件?换句话说,您希望您的其他控件现在绑定到字段 1-4,但您希望能够立即更改到字段 5-8?
-
基本上。程序中的对象有一个抽象级别,在这里被表示,所以我想在这里反映这个抽象。例如,一个对象可能决定使用 field1、field2 和 field3,而另一个对象可能决定使用 field5 和 field6。这就是我想你所说的,唯一的区别是你提到了1-4和5-8,它们是相同数量的字段,在这种情况下我可以写Eval(fields [0]),Eval(fields [1]) 等。不过,它的大小是可变的。
-
那么您如何确定哪些行显示哪些字段?
-
这是我要迭代的结果的一部分,属于逻辑类别。返回的结果具有“事件”的概念,我想输出偶数名称以及它是否发生。但是,对象本身是抽象的,并且只包含一个事件列表(其中包含其对应的 sql 字段)。我想遍历它来检查对象的状态。