2011-04-01 81 views
9

如果我有以下ASP.NET代碼(它沒有完成 - 顯然還有很多缺失,但沒有它的問題):如何將GridView綁定到自定義對象?

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

如果我有代碼隱藏是這樣的:

Private MyListOfObjects As List(Of MyObject) 

... 

Public Class MyObject 

    Public MyTextBoxString as String 
    Public MyLabelString as String 

End Class 

如何綁定GridView,使其中一行等於我的MyListOfObjects列表中的一個項目,以便數據將在頁面加載或回發中填充並保留?我從來沒有像以前那樣完成自定義數據綁定,所以完整的解釋會非常有幫助。到目前爲止,我所遇到的所有教程都只是談論直​​接使用GridViews與數據庫查詢結果,而這不是我所需要的。

謝謝!

+0

檢查是否有幫助:http://weblogs.asp.net/gurusarkar/archive/2010/04/28/binding-list-of-custom-class-to-gridview-or-listview-control.aspx – gbs 2011-04-01 21:19:40

+0

看到我對你的問題的回答。 – JonH 2011-04-01 23:03:53

回答

8

只需將gridview的數據源設置爲您的對象即可。

MyGridView.DataSource = myList 
MyGridView.DataBind() 

這裏有一個非常相似職位:

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

看起來像您使用的是vb.net的列表。記住列表可以包含整數,字符串,日期,對象(這些包括用戶定義的類型(您的對象))。 因此,您可以通過將datasource屬性設置爲列表來將gridview綁定到列表對象。

在上面的示例中,myList可能包含大量員工對象等。因此,將其分配給數據源和.DataBind(),並將每個包含對象的行分配給一個gridview。

+0

除了預先定義好我的列,並且我的列表與列不匹配,所以我需要手動指定行並將其映射到列表中的對象。 – qJake 2011-04-01 20:01:02

+0

@SpikeX - 您不需要做任何事情,無論您在網格視圖中顯示的哪個列都會顯示出來。例如,假設您有一個包含3個屬性年齡,姓名和出生日期的客戶對象。如果您只想顯示名稱和年齡,那麼您的.aspx標記中就有2個具有名稱和年齡的模板字段。我的解決方案爲您處理。 – JonH 2011-04-01 23:03:33

+0

你的答案是最接近的,但是你沒有描述如何將個別'TemplateFields'綁定到對象的屬性 - 你需要使用'<%#Databinder.Eval(Container.DataSource,「MyPropertyName」)%>' – qJake 2011-04-05 19:46:01

1

你可以做這樣的事情

My Label: <asp:Label id="myLabel" runat="server" Text='<%# Eval("MyTextBoxString") %>' /> 
在標記和類似的東西,你的文本框

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

我不明白嗎? – ppumkin 2012-07-26 09:14:10

1

首先記住任何綁定控件像GridViewDropdownList e.t.c結合到公共屬性,所以首先讓你的公衆成員的公共屬性。

然後創建的MyObject類的對象,並將它們添加到您的List<MyObject>對象

最後,你可以通過保存它SessionViewState回發後保持它堅持這個列表對象。

我希望你現在就可以做到!如果需要,你可以要求更多的幫助。

相關問題