2009-10-19 8 views
14

Je suis sûr que j'ai déjà fait cela mais je ne peux vraiment pas m'en souvenir.Obtenir la valeur des données de ListView ItemDataBound

Dans l'événement ItemDataBound d'un ListView, je dois obtenir la valeur de données réelle. Je ne peux pas l'air de le trouver dans l'objet de ListViewItemEventArgs qui est passé dans.

Merci

Répondre

-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> 

côté serveur

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

Isnt que la mise en juste une étiquette en italique? Je dois obtenir la valeur réelle des données de l'objet lié. – Gavin

+0

N'existe-t-il aucun moyen d'accéder à la valeur de données actuelle. Je ne veux pas juste recevoir une chaîne d'une étiquette. Je sais que lorsque j'utilisais DataLists, vous pouviez obtenir la valeur réellement dans le datalist de l'objet passé dans l'événement. – Gavin

15

Utilisez le ListViewDataItem dans l'événement ItemDataBound:

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); 
    } 
} 
Questions connexes