2010-09-19 5 views
1

У меня есть таблица поставщиков с идентификационной стоимостью для каждого поставщика. Я пытаюсь редактировать столбцы этой таблицы внутри ListView.Как узнать идентификатор элемента ListView на OnItemUpdated?

Я пытаюсь получить доступ к e arg, но у него нет данных об идентификаторе строки, которую я пытаюсь обновить?

ответ

1

Используйте sender вместо e

protected void ListView1_ItemUpdated(object sender, ListViewUpdatedEventArgs e) 
{ 
    if ((sender as ListView) != null) 
    { 

     ListView l = (ListView)sender; 
     l.SelectedIndex; 
     l.etc.............. 
     DataKey key = l.SelectedDataKey; 
     object k = key.Values["foo"];   
    } 
} 
+0

Спасибо, @Caspar Kleijne. Как получить значение id sql текущего элемента, которое я редактирую? – eugeneK

+0

@Caspar Kleijne, я получаю исключение нулевого объекта в Response.Write ((ListView) отправитель) .SelectedDataKey.Value.ToString()); Я добавил в ListView DataKeyNames = 'id' – eugeneK

+0

- это идентификатор в вашем списке? (Кроме того, что он объявлен как datakeyname?) –

1

Вы должны установить ListView.DataKeyNames содержать имя свойства в UniqueID

<asp:ListView runat="server" ID="LvSample" DataKeyNames="SupplierId"/> 

Тогда DataKey будет доступна в обновлении Мероприятия. Не стоит ничего, что вы могли бы использовать событие ItemUpdating вместо ItemUpdated, поскольку это происходит до того, как произойдет обновление.

 protected void Page_Load(object sender, EventArgs e) 
    { 
     LvSample.ItemUpdating += new EventHandler<ListViewUpdateEventArgs>(LvSample_ItemUpdating); 
     LvSample.ItemUpdated += new EventHandler<ListViewUpdatedEventArgs>(LvSample_ItemUpdated); 

    } 

    void LvSample_ItemUpdated(object sender, ListViewUpdatedEventArgs e) 
    { 
     var supplierId = e.NewValues["SupplierId"]; 
    } 

    void LvSample_ItemUpdating(object sender, ListViewUpdateEventArgs e) 
    { 
     var supplierId = e.Keys["SupplierId"]; 
    } 
Смежные вопросы