在OnItemCreated中的Repeater中获取列名

时间:2010-09-09 14:59:23

标签: asp.net repeater

我正在研究一个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"

如何让该列名进行比较?

2 个答案:

答案 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。