2013-09-27 7 views
1

Может ли кто-нибудь помочь мне привязать данные? Я новичок в .net и C#, и я следую учебным пособиям, которые только наводят меня на полпути. Aspx является следующим:Databinding in C#

<asp:Repeater ID="rptContent" runat="server"> 
    <HeaderTemplate> 
    <table> 
     <thead> 
     <tr> 
      <th>T</th> 
      <th>L</th> 
      <th>S</th> 
     </tr> 
     </thead> 
     <tbody> 
    </HeaderTemplate> 
    <ItemTemplate> 
    <tr> 
     <td><%# Eval("T") %></td> 
     <td><%# Eval("L")%></td> 
     <td><%# Eval("S")%></td> 
    </tr> 
    </ItemTemplate> 
    <FooterTemplate> 
    </tbody> 
    </table> 
    </FooterTemplate> 
</asp:Repeater> 

Но на заднем конце я не знаю, как на самом деле связывать данные. Если есть учебное пособие, кто-то может отправить меня, чтобы следовать за этой частью, я был бы признателен или если вы объясните, что это было бы здорово.

public List<Sample> Results() 
    {  
     List<Sample> List = new List<Sample>();  
     myList.Add(new Sample { Title = "Title 
1", Link = "/item.aspx?id=1", Summary = "summary  
for Item 1" }); 

     return List; 
    } 

    public class Content 
    { 
     public string T 
     { 
      get; 
      set; 
     } 

     public string L 
     { 
      get; 
      set; 
     } 

     public string S 
     { 
      get; 
      set; 
     } 
    } 
+2

@Dilshod, то есть для WinForms и будет более запутанным, чем полезно, потому что различия в привязки данных между ASP.NET и WinForms. – Khan

+1

У вас это почти. Вам необходимо установить DataSource 'rptContent' в свои данные (содержащие T, L и S), а затем вызвать' rptContent.DataBind() ', чтобы связать все это вместе. –

+0

Итак, вы пытались связать данные? Какие у вас проблемы с вашей попыткой? Разве это не компиляция, она дает ошибку или неправильный вывод или что? – Servy

ответ

0

Можете ли вы напрямую связать список образцов? или вам нужно связать его с содержимым класса?

Важным здесь является: в разметке, когда вы используете Eval (""), вы должны указать точное имя свойства объекта, который вы связываете.

Если вы можете использовать список Sample Я хотел бы сделать следующее ASPX:

<asp:Repeater ID="rptContent" runat="server"> 
    <HeaderTemplate> 
    <table> 
     <thead> 
     <tr> 
      <th>T</th> 
      <th>L</th> 
      <th>S</th> 
     </tr> 
     </thead> 
     <tbody> 
    </HeaderTemplate> 
    <ItemTemplate> 
    <tr> 
     <td><%# Eval("Title") %></td> 
     <td><%# Eval("Link")%></td> 
     <td><%# Eval("Summary")%></td> 
    </tr> 
    </ItemTemplate> 
    <FooterTemplate> 
    </tbody> 
    </table> 
    </FooterTemplate> 
</asp:Repeater> 

и Code-Behind:

protected void Page_Load(object sender, EventArgs e) 
{ 
    rptContent.DataSource = Results(); 
    rptContent.DataBind(); 
} 
public List<Sample> Results() 
{  
     List<Sample> List = new List<Sample>();  
     myList.Add(new Sample { Title = "Title 
1", Link = "/item.aspx?id=1", Summary = "summary  
for Item 1" }); 

     return List; 
} 
1

Коллекция присвоенным к источнику данных вашего повторитель должен быть набором элементов, содержащих свойства, на которые вы собираетесь привязываться.

Отдельные элементы в вашей коллекции Results непосредственно не обладают L, T, & S свойства так в связывании этой коллекции ретранслятора, ретранслятор не может найти эти свойства. В вашем случае, вам нужно привязать к коллекции Content объектов:

List<Content> contentResults = new List<Content>(); 
contentResults.Add(new Content(){L="el", T="tee", S="es"}); 
rptContent.DataSource = contentResults; 
rptContent.DataBind(); 
+1

Зачем ему использовать DataBinder.Eval (Container.DataItem, "Fields ['T']. Value ") вместо Eval (" ")? Я никогда не использовал их в своих проектах. Если вы что-то предложите, вы должны предоставить информацию о том, почему, не так ли? –

+0

Достаточно честный. Я использовал этот синтаксис для многих проектов с успехом, просто предоставляя альтернативу. http://forums.asp.net/p/984156/1264782.aspx Главный отрыв от моего ответа заключается в том, что свойства в выражениях привязки не расположены на объектах, которые фактически связаны. – KodeKreachor

+0

@GabrielEduardoEspinozaErice Согласитесь с Габриэлем - более подробный синтаксис в этом случае не поможет, когда более короткий работает одинаково. –