#c# #javascript #asp.net #listview
#c# #javascript #asp.net #listview
Вопрос:
Во время моего исследования я нашел несколько решений моей проблемы (описано ниже), но, к сожалению, эти решения не будут работать для веб-сайтов, поскольку все они ориентированы на WinForms.
Мне нужно получить DisplayIndex элемента ListViewItem при наведении курсора мыши. Я не хочу делать такие вещи, как добавление индекса при рендеринге страницы с помощью пользовательского атрибута html, такого как 'index="0"'
, а затем использовать это в моей __doPostBack()
функции.
У меня есть updatepanel
и a listview
внутри всего этого в абсолютном div, когда мышь находится над меткой, расположенной в другом listview
элементе, я хотел бы иметь возможность обновлять updatepane
l данными, относящимися к элементу, на который наведен указатель мыши. Вся идея, стоящая за этим, заключается в том, что я хочу использовать один контейнер div и скрывать / показывать его для каждого mouseover
из listview
элементов.
Итак, в принципе, при наведении курсора мыши, скажем, на метку с ID = «hi» внутри listviewitem внутри listview id = «lv», я хочу получить этот идентификатор listviewitem для обновления другого listview внутри другой updatepanel.
Я не уверен, что все это сбивает с толку, но просто получение DisplayIndex
зависшего listviewitem
значения и использование его в __doPostBack
функции решит мою проблему.
Спасибо, что уделили мне время!
Комментарии:
1. Почему вы произвольно отвергаете хорошие решения, такие как использование пользовательского атрибута html
index=#
?2. считается ли это хорошей практикой для этого? Я нахожу это немного запутанным. Я уверен, что есть другой способ сделать это :/
3. Конечно, если он выполнит свою работу 🙂 Я не вижу в этом никакой проблемы. Если вы действительно хотели избежать пользовательского атрибута, то вы могли бы использовать встроенный атрибут like
name
или добавить скрытый элементinput
orspan
с вашими пользовательскими данными к каждой строке / элементу данных.4. Я думаю, что наличие HiddenField не так уж плохо.
Ответ №1:
Вы можете добавить кнопку за надписью, установить CommandName="Select"
на эту кнопку и скрыть ее с помощью display:none
стиля. В обработчике событий ItemDataBound в ListView вы можете добавить атрибут onmouseover в label для запуска этих нажатий на кнопки и обработки события SelectedIndexChanging в ListView, где вы, естественно, можете получить индекс выбранного элемента.
разметка:
<ItemTemplate>
<li>
<asp:Label runat="server" ID="Label1" Text='<%# Container.DataItem.ToString() %>' />
<asp:Button runat="server" ID="SelectButton" CommandName="Select" style="display:none;" />
</li>
</ItemTemplate>
Код:
void ListView1_ItemDataBound(object sender, ListViewItemEventArgs e)
{
var label = e.Item.FindControl("Label1") as Label;
if (label != null)
{
var selectButton = e.Item.FindControl("SelectButton") as Button;
label.Attributes["onmouseover"] = ClientScript.GetPostBackEventReference(selectButton, "");
}
}
Комментарии:
1. Круто, я собираюсь принять это, поскольку это выполняет свою работу. Спасибо