我正在研究一个Repeater,它从一个表中读取一个类似于:
的布局string Title
string Location
bool Water
bool Sewer
bool Picnic_Table
bool On_Beach
...
我正在为每个“标题”创建一个设施列表,所以我需要遍历列并获得每个标题(或网站)的便利设施列表。最理想的是,我有一个循环来浏览列表。像
这样的东西for each column
if column is not Title or Location
Append to StringBuilder "column name"
如何让该列名进行比较?
答案 0 :(得分:1)
以下是如何在Repeater控件的OnItemCreated事件中获取列名:
protected void rptOnItemCreated_OnItemCreated(object sender, RepeaterItemEventArgs e)
{
string columnName = string.Empty;
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
DataRowView drv = (DataRowView)e.Item.DataItem;
DataRow dr = drv.Row;
foreach (DataColumn dc in dr.Table.Columns)
{
// Do what you want with the column name
columnName = dc.ColumnName;
}
}
}
答案 1 :(得分:0)
Repeater不是基于表的控件,因此从服务器端来说很难。你可以做的是可编程地创建一个表,或使用Grid控件。或者,尝试使表成为服务器端控件,并查看它是否适用于转发器(我认为不会)。或者,如果您可以说忽略前两列,则将转发器项中的表行设置为服务器端行,并使用FindControl查找该项并对其执行某些操作。但是,您必须使用单元格索引来显示/隐藏列中的单元格。
HTH。