Har följande kod: Tjena,Arraylist till datagrid
Dim dictCart As New ArrayList
dictCart.Add("vara1")
DataGrid1.DataSource = dictCart
DataGrid1.DataBind()
I aspx sidan har jag
<asp:TemplateColumn>
<ItemTemplate>
Response.Write <%# DataBinder.Eval(Container.DataItem, "?????") %>
<ItemTemplate>
</asp:TemplateColumn>
Vad ska jag sätta för värde i <%# DataBinder.Eval(Container.DataItem, "????") %>Sv: Arraylist till datagrid
Du kan inte enbart fylla en ArrayList med enkel-värden. För att kunna binda en datakälla(ex. ArrayList) till en DataGrid så måste datakällan vara av typen "multi-record". För att en ArrayList ska kunna vara "multi-record" måste du lagra objekt som har properties. Nedan följer ett exempel på vad jag menar:
Om du använder din ArrayList enligt följande princip så kommer det att fungera:
Skapa en klass med de objekt som du lagrar i ArrayListen. Viktigt!! Du måste använda dig av properties som du kan refera till i html-koden
ex:
Public Class Bok
Public t As String
'Följande property refererar vi till i htmlsidan(ex. DataItem.Titel)
Public Property Titel()
Get
Return t
End Get
Set(ByVal Value)
t = Value
End Set
End Property
Public Sub New(ByVal t As String)
Me.Titel = t
End Sub
End Class
Skapa därefter en metod där du skapar, fyller och binder ArrayListen till DataGriden.
ex:
Private Sub SkapaFyllOchBindArrayList()
Dim arrList As New ArrayList
Dim b1 As New Bok("Lassie")
Dim b2 As New Bok("Sagan om Ringen")
arrList.Add(b1)
arrList.Add(b2)
DataGrid1.DataSource = arrList
DataGrid1.DataBind()
End Sub
Avlustningsvis binder du ArrayListen i htmlsidan:
ex.
<asp:datagrid id="DataGrid1" style="Z-INDEX: 101; LEFT: 288px; POSITION: absolute; TOP: 192px"
runat="server" AutoGenerateColumns="False">
<Columns>
<asp:TemplateColumn HeaderText="Namn">
<ItemTemplate>
<asp:Label ID="Namn" Runat="server" Text='<%#DataBinder.Eval(Container, "DataItem.Titel")%>'>
</asp:Label>
</ItemTemplate>
</asp:TemplateColumn>
</Columns>
</asp:datagrid>