2010-09-09 3 views
0

Я работаю на ретранслятор, который считывает данные из таблицы с раскладкой что-то вроде:Получение имени столбца в Repeater в OnItemCreated

string Title 
string Location 
bool Water 
bool Sewer 
bool Picnic_Table 
bool On_Beach 
... 

я создаю список удобств для каждого «Title», так что я необходимо пройти через столбцы и получить список удобств для каждого заголовка (или сайта). Оптимально, у меня есть цикл, чтобы пройти через список. Что-то вроде

for each column 
    if column is not Title or Location 
     Append to StringBuilder "column name" 

Как мне получить это имя столбца для сравнения?

ответ

1

Вот как получить имя столбца в OnItemCreated случае управления Repeater:

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; 
     } 
    } 
} 
+0

Именно то, что я искал! Благодаря! –

0

Повторитель не является управлением на основе таблиц, поэтому это будет сложно с сервера. То, что вы можете сделать, это программируемое создание таблицы или использование элемента управления Grid. Или попробуйте сделать таблицу серверным элементом управления и посмотреть, хорошо ли это работает с ретранслятором (я не думаю, что это будет). Или, если вы можете сказать, игнорировать первые два столбца, сделайте строку таблицы внутри элемента ретранслятора серверной строкой, как и, и используйте FindControl, чтобы найти элемент и сделать что-то с ним. Вам нужно будет работать с индексом ячейки, чтобы показать/скрыть ячейки внутри столбца.

HTH.