2011-11-10 32 views
1

在我的研究過程中,我發現了一些解決方案(如下所述),但不幸的是這些解決方案不適用於網站,因爲它們都是針對WinForms的。使用C#ASP.NET ListView,無法返回DisplayIndex

我需要在MouseOver事件中獲取ListViewItem的DisplayIndex。我不想做這樣的事情,比如當頁面通過像'index="0"'這樣的自定義html屬性進行渲染時添加索引,然後在我的__doPostBack()函數中使用它。

我有一個updatepanellistview的所有內的絕對格中,當鼠標移動到位於另一listview項的標籤,我希望能夠與相關的數據以更新updatepane升這是懸停的項目。這背後的全部想法是,我想要使用一個容器div並在listview項目上的每個mouseover上隱藏/顯示它。

所以基本上,當鼠標懸停讓我們說一個ID =「嗨」內的listviewitem裏面的listview id =「lv」我想獲得listviewitem ID來更新另一個updatepanel內的另一個列表視圖。

我不確定這是否令人困惑,但只是得到DisplayIndex的盤旋listviewitem並使用它在__doPostBack函數將解決我的問題。

謝謝你的時間!

+1

爲什麼你隨意拒絕像使用自定義HTML屬性'指數=#'好的解決辦法? – mellamokb

+0

這是否被認爲是很好的做法?我覺得有點亂。我確信還有另一種方法:/ – user1027620

+1

當然,如果它完成了工作:)我沒有看到任何問題。如果您真的想要避免自定義屬性,那麼您可以使用內置屬性(如「name」)或爲您的自定義數據添加隱藏的「輸入」或「span」元素到每個行/數據元素。 – mellamokb

回答

1

您可以在標籤後面添加一個按鈕,在該按鈕上設置CommandName="Select"並使用display:none樣式將其隱藏。在ListView的ItemDataBound事件處理程序中,您可以將onmouseover屬性添加到標籤以觸發這些按鈕單擊並處理ListView的SelectedIndexChanging事件,您自然可以獲取所選項目的索引。

標記:

<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, ""); 
    } 
} 
+0

很酷,我會接受,因爲它完成了工作。謝謝 – user1027620