2011-04-01 21 views
9

Eğer ben şu ASP.NET kodu (tamamlanmasını değil - Açıkçası eksik çok şey var, ama hiçbiri önemli):GridView öğesini özel bir nesneye nasıl bağlarım?

<asp:GridView> 
     <Columns> 
      <asp:TemplateField> 
       <ItemTemplate> 
        My Label: <asp:Label /> 
       </ItemTemplate> 
      </asp:TemplateField> 
      <asp:TemplateField> 
       <ItemTemplate> 
        My Text Box: <asp:TextBox /> 
       </ItemTemplate> 
      </asp:TemplateField> 
     </Columns> 
    </asp:GridView> 

Ve codebehind böyle bir şey varsa:

Private MyListOfObjects As List(Of MyObject) 

... 

Public Class MyObject 

    Public MyTextBoxString as String 
    Public MyLabelString as String 

End Class 

GridView'ı, bir satırın MyListOfObjects listemdeki bir öğeye eşdeğer olması ve böylece verilerin sayfa yükleri veya geri yüklemeler genelinde yerleştirilip devam etmesini sağlamak için nasıl bağlarım? Daha önce hiç böyle özel bir veritabanını daha önce hiç yapmadım, bu yüzden tam bir açıklama çok yardımcı olacaktı. Bugüne kadar rastladığım tüm öğreticiler, yalnızca GridViews'ı doğrudan Veritabanı sorgu sonuçlarıyla kullanmaktan bahsediyorlar ve ihtiyacım olan şey bu değil.

Teşekkürler!

+0

Bunun yardımcı olup olmadığını kontrol edin: http://weblogs.asp.net/gurusarkar/archive/2010/04/28/binding-list-of-custom-class-to-gridview-or-listview-control.aspx – gbs

+0

cevabınıza cevabımı görün. – JonH

cevap

8

Izgara görünümünün veri kaynağını yalnızca nesnenize ayarlayın.

MyGridView.DataSource = myList 
MyGridView.DataBind() 

Burada çok benzer yazı var: Eğer vb.net bir liste kullanıyor gibi

Binding a method that returns List<employee> to a gridview

görünüyor. Unutmayın, listeler tamsayıları, dizeleri, tarihleri, nesneleri tutabilir (bunlar kullanıcı tanımlı türler (nesneniz)). Böylece, veri kaynağı özelliğini listenize ayarlayarak bir ızgara nesnesini liste nesnesine bağlayabilirsiniz.

Yukarıdaki örnekte myList, bir çalışan nesnesi vb. Tutabilir. Bu nedenle, veri kaynağına ve .DataBind() atayın ve nesneyi içeren her bir satırda bir grid görünümü ekleyin.

+0

Dışında sütunlarımı önceden tanımladığım ve listenin sütunlarla eşleşmediğinden, satırları listemin içindeki nesnelere el ile belirtmem ve eşleştirmem gerekiyor. – qJake

+0

@SpikeX - Hiçbir şey yapmanıza gerek yok, ızgara görünümünüzden ''ı kullandığınız sütunlar görüntülenir. Örneğin, 3 mülkün yaşı, adı ve doğum tarihi ile bir müşteri nesnesi olduğunu varsayalım. Yalnızca ismini göstermek istiyorsanız ve .aspx işaretlemenizde yaşınız, adı ve yaşı olan 2 şablon alanına sahiptir. Benim çözümüm bunu sizin için halleder. – JonH

+0

Cevabınız en yakındı, ancak bireysel TemplateFields öğesinin nesnenin özelliklerine nasıl bağlanacağını anlatmadınız - <% # Databinder.Eval (Container.DataSource, "MyPropertyName")%> ' – qJake

1

Sen metin kutusu için biçimlendirme ve benzeri şeyler

My Label: <asp:Label id="myLabel" runat="server" Text='<%# Eval("MyTextBoxString") %>' /> 

gibi bir şey yapabilirsiniz.

GridView1.DataSource = MyListOfObjects 
GridView1.DataBind() 
+0

Anlamadım mı? – ppumkin

1

İlk böylece ilk kamu özelliklerine genel üye olun GridView, kamu özelliklerine DropdownList e.t.c bağlama gibi herhangi bir bağlayıcı kontrolleri hatırlıyorum.

Sonra MyObject sınıf nesneleri oluşturmak ve Sonunda geri göndermeler sonra bunu korumak için Session veya ViewState içine kaydederek bu liste nesne devam edebilirsiniz List<MyObject> nesne

ekleyin.

Umarım şimdi yapabilirsin! Gerekirse daha fazla yardım isteyebilirsiniz.