2009-10-19 2 views
14

Я уверен, что я сделал это раньше, но на самом деле не могу вспомнить, как это сделать.Получить значение данных из ListView ItemDataBound

В событии ItemDataBound в ListView мне нужно получить фактическое значение данных. Я не могу показаться, чтобы найти его в объекте ListViewItemEventArgs, который получает передается в.

Благодаря

ответ

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

стороне сервера

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 что просто установив метку курсивом? Мне нужно получить фактическое значение данных связанного элемента. – Gavin

+0

Нет способа получить доступ к фактическому значению данных. Я не хочу просто получать строку с метки. Я знаю, когда я использовал DataLists, вы могли бы получить фактическое значение в datalist из объекта, переданного в событие. – Gavin

15

Использовать ListViewDataItem в 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); 
    } 
} 
Смежные вопросы