2009-10-19 7 views
14

Ich bin mir sicher, dass ich das schon einmal gemacht habe, aber kann mich wirklich nicht erinnern, wie.Get Data Value von ListView ItemDataBound

Im ItemDataBound-Ereignis eines ListView muss ich den tatsächlichen Datenwert erhalten. Ich kann nicht scheinen, um es in dem ListViewItemEventArgs Objekt zu finden, die in übergeben werden.

Dank

Antwort

-2
<asp:ListView ID="ContactsListView" 
     DataSourceID="ContactsDataSource" 
     ConvertEmptyStringToNull="true"   
     OnItemDataBound="ContactsListView_ItemDataBound" 
     runat="server"> 
     <LayoutTemplate> 
      <table cellpadding="2" width="680px" border="0"> 
      <tr style="background-color: #ADD8E6" runat="server"> 
       <th runat="server">First Name</th> 
       <th runat="server">Last Name</th> 
       <th runat="server">E-mail Address</th> 
      </tr> 
      <tr runat="server" id="itemPlaceholder" /> 
      </table> 
      <asp:DataPager runat="server" ID="PeopleDataPager" PageSize="12"> 
      <Fields> 
       <asp:NumericPagerField ButtonCount="10" /> 
      </Fields> 
      </asp:DataPager> 
     </LayoutTemplate> 
     <ItemTemplate> 
      <tr style="background-color: #CAEEFF" runat="server"> 
      <td> 
       <asp:Label ID="FirstNameLabel" runat="server" Text='<%#Eval("FirstName") %>' /> 
      </td> 
      <td> 
       <asp:Label ID="LastNameLabel" runat="server" Text='<%#Eval("LastName") %>' /> 
      </td> 
      <td> 
       <asp:Label ID="EmailAddressLabel" runat="server" Text='<%#Eval("EmailAddress") %>' /> 
      </td> 
      </tr> 
     </ItemTemplate> 
     </asp:ListView> 

Server-Seite

protected void ContactsListView_ItemDataBound(object sender, ListViewItemEventArgs e) 
     { 
     if (e.Item.ItemType == ListViewItemType.DataItem) 
     { 
      // Display the e-mail address in italics. 
      Label EmailAddressLabel = (Label)e.Item.FindControl("EmailAddressLabel"); 
      // EmailAddressLabel.Font.Italic = true; 
      string valueoftheControl = EmailAddressLabel.Text; 
      /* you have to get the value like this. 
      If its a dropdown or any other use their 
      corresponding property to get the value.*/ 
     } 
     } 
+0

Ist das nicht ein Label kursiv nur einstellen? Ich muss den tatsächlichen Datenwert des zu bindenden Objekts ermitteln. – Gavin

+0

Gibt es keine Möglichkeit, auf den tatsächlichen Datenwert zuzugreifen? Ich möchte nicht nur eine Zeichenfolge von einem Label erhalten. Ich weiß, wann ich DataLists benutzt habe, konnte man den tatsächlichen Wert im Datenlistenpunkt von dem Objekt erreichen, das an das Ereignis übergeben wurde. – Gavin

15

Verwenden Sie die ListViewDataItem in der ItemDataBound Ereignis:

protected void yourListView_ItemDataBound(object sender, ListViewItemEventArgs e) 
{ 
    ListViewDataItem dataItem = (ListViewDataItem)e.Item; 

    if (e.Item.ItemType == ListViewItemType.DataItem) 
    { 
     YourDataSource yourDataSource= (YourDataSource)dataItem.DataItem;    

    } 

} 
3
protected void Score_ItemDataBound(object sender, Telerik.Web.UI.RadListViewItemEventArgs e) 
{ 
    if (e.Item is RadListViewItem) 
    { 
     RadListViewDataItem item = e.Item as RadListViewDataItem; 
     object dataItem = ((System.Data.DataRowView)(((RadListViewDataItem)e.Item).DataItem)).Row.ItemArray[2].ToString(); 
     string raetest = Convert.ToString(dataItem); 
    } 
}