Получение имени столбца в повторителе в OnItemCreated

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

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 ответа

Решение

Вот как получить имя столбца в событии 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;
        }
    }
}

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

НТН.

Другие вопросы по тегам