ASP .NET - получить значение из Listview на основе NewEditIndex - PullRequest
1 голос
/ 02 октября 2009

Использование ASP.NET 3.5 элемента управления ListView.

Я хотел бы получить значение идентификатора моей таблицы из текущей редактируемой строки ListView.

Событие ItemEditing было добавлено в ListView. Единственное значение, доступное в этом событии, - e.NewItemIndex. Возвращает 0, если редактируется первая строка текущей страницы ListView.

Как мне преобразовать этот 0 в фактический идентификатор таблицы (управляющее значение метки)?

Я пробовал:

table_id = Convert.ToString(ListView1.Items[e.NewEditIndex].FindControl("table_idLabel1"));

Ответы [ 3 ]

1 голос
/ 02 октября 2009

Можно ли использовать свойство DataKeyNames вместо метки? Установите для свойства имя поля базы данных, которое является ключом для таблицы, затем выполните что-то вроде этого:

table_id = ListView1.DataKeys[e.NewEditIndex].Value.ToString();
0 голосов
/ 02 октября 2009

Вы уверены, что table_idLabel1 является правильным идентификатором?

Кроме того, вам, возможно, придется выглядеть рекурсивно, как в ответе Криса. Кроме того, похоже, что вы используете элемент управления в виде строки. Возможно, вам нужно свойство ID, а не сам элемент управления.

0 голосов
/ 02 октября 2009

Использовать FindControlRecursive (из Рекурсивный Page.FindControl ). Проблема с FindControl заключается в том, что он ищет только один слой.

private Control FindControlRecursive(Control root, string id) 
{ 
    if (root.ID == id)
    { 
        return root; 
    } 

    foreach (Control c in root.Controls) 
    { 
        Control t = FindControlRecursive(c, id); 
        if (t != null) 
        { 
            return t; 
        } 
    } 

    return null; 
} 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...