Найдите элемент управления в Asp.net Listview Внутри шаблона выбранного элемента

StackOverflow https://stackoverflow.com/questions/204747

  •  03-07-2019
  •  | 
  •  

Вопрос

Я конвертирую функциональность из asp.net Gridview в Listview.В gridview, когда выбранный элемент менялся, я получал значение из метки в выбранной строке и записывал его в другую метку за пределами gridview.

Protected Sub grdModules_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles grdModules.SelectedIndexChanged

    Dim lblModuleTitle As Label = grdModules.SelectedRow.FindControl("lblModuleTitle")
    lblCurrentModule.Text = lblModuleTitle.Text

End Sub

В Listview существует не концепция "selectedRow", а SelectedItem .Однако вы не можете выполнить findcontrol для выбранного элемента.Когда я пытаюсь сделать следующее (я получаю исключение с нулевой ссылкой):

Protected Sub listviewModules_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles listviewModules.SelectedIndexChanged

    Dim lblModuleTitle As Label = CType(listviewModules.FindControl("lblModuleTitle"), Label)
    lblCurrentModule.Text = lblModuleTitle.Text

End Sub

Кто-нибудь знает способ найти элемент управления внутри шаблона выбранного элемента?

Это было полезно?

Решение

Вы вызываете FindControl для всего ListView, а не только для выбранного элемента.Это должно сработать:

Dim lblModuleTitle As Label = CType(listviewModules.Items(listviewModules.SelectedIndex).FindControl("lblModuleTitle"), Label)
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top