2016-04-05 23 views
0

Bu sayfada, yığın aktarma ve msdn belgelerinde çok fazla araştırma yaptım, ancak hiçbir şey yardımcı olmadı. Benim asp: liste görünümünde bir öğe seçebilmem ve seçtiğim metni seçip daha sonra kullanılacak bir dizeye koymam gerekiyor.Verilerin asp'den saklanması: bir dizeye liste görünümü

<li class="menu-item menu-item-has-children"> 
    <a href="#" class="sf-with-ul">Undécimo</a> 
    <ul runat="server" id="eleventhList" class="sub-menu"> 
     <asp:ListView ID="listViewforEleventh" runat="server" OnItemCommand="listViewforEleventh_ItemCommand"> 
      <ItemTemplate> 
       <a onserverclick="linkForEleven_ServerClick" runat="server" id="linkForEleven" href="ViewSchedule.aspx"> <asp:Label ID="eleventhGroupLabel" runat="server" Text="<%#Container.DataItem %>"></asp:Label> </a> 
       <asp:Label runat="server" ID="dataString"></asp:Label> 
      </ItemTemplate> 

     </asp:ListView> 
    </ul> 
</li> 

böyle liste görünümünü doldurma ediyorum: İşte benim .aspx kod var bu işleri

private void loadEleventh() 
{ 
    list = group.getGroupsByLevelService(11); 
    List<string> sublist = new List<string>(); 
    foreach (var element in list) 
     sublist.Add(element.GroupName); 
    listViewforEleventh.DataSource = sublist; 
    listViewforEleventh.DataBind(); 
} 

ama şimdi ise veri (metin) seçmeniz gerekir sp: ListView. Ben böyle yapıyorum: Ben kodu debug zaman

protected void linkForEleven_ServerClick(object sender, EventArgs e) 
{ 
    ListViewDataItem item = listViewforEleventh.Items[listViewforEleventh.SelectedIndex]; 
    Label c = (Label)item.FindControl("dataString"); 
    groupName = c.Text; 
} 

Ben değeri -1 ile selectedIndex yönteminde aralığı istisna dışında endeksinin bir hata var. Bunu Nasıl Çözebilirim? Ya da verileri liste görünümünden nasıl alabilirim ve bir dizgede başka şekilde saklayabilirim? senin SelectedIndexChanged Olay işleyicisi

+0

listViewforEleventh.SelectedIndex -1 ise, satırın seçili olmadığı anlamına gelir. Bunun nedeni, öğe şablonunda bir olay başlattığınız ve satır seçilmeden işlenmekte olduğudur. YOu bu bağlantıyı mükemmel bir şekilde kaldırabilir ve sadece "SelectedIndexChanged" listesine – Gusman

cevap

0

Bunu yapmak: Elbette

string valueToSave = YourListBox.SelectedValue.ToString(); 

, size aslında YourListbox.SelectedValue için bir değer olabilmesi için sırayla ListBox bir öğeyi seçtiğinizden emin olmak gerekir. Bu sadece bir kez nasıl yapılacağının bir örneğidir. Elbette bu değeri nasıl kullanmak istediğinizin detaylarını bilmiyorum.

+0

listesinden bağlanabilirsiniz, diğer bir deyişle selectedItemChange için onitemcommand'ı değiştirmem gerekiyor mu? –

+0

'OnItemCommand' yerine, .'aspx' dosyasında' SelectedIndexChanged = listViewforEleventh_ItemCommand' öğesini deneyin. – ic3man7019

+0

Eğer sadece bunu yaparsam bir invalidOperationException alıyorum, yani almak istediğim değerleri belirtmek için dataKeyNames'e ihtiyacım var. Şimdi nasıl yapılacağı hakkında genel bir fikrim var .. teşekkürler ... eğer tekrar yardıma ihtiyacım olursa tekrar rahatsız edersiniz, üzgünüm –