ASP.Net Repeater item.DataItem null

Inside the web page, after loading, I populate the dataset with two tables with the relationship between these tables and then load the data into the repeater using a nested repeater. This can also happen after a user clicks a button. Data is loaded from the SQL database, and the repeater data source is installed into the data set after the postback. However, when an ItemDataBound occurs, Item.Dataitem is always null.

Why is this happening?

Here is the data code:

this.rptCustomSpaList.DataSource = ds; this.rptCustomSpaList.DataBind(); 

Here is the code for ItemDataBound:

  RepeaterItem item = e.Item; Repeater ChildRepeater = (Repeater)item.FindControl("rptCustomSpaItem"); DataRowView dv = e.Item.DataItem as DataRowView; ChildRepeater.DataSource = dv.CreateChildView("sparelation"); ChildRepeater.DataBind(); 

below is my HTML repeater code

 <asp:Repeater ID="rptCustomSpaList" runat="server" onitemdatabound="rptCustomSpaList_ItemDataBound"> <HeaderTemplate></HeaderTemplate> <ItemTemplate> <table> <tr> <td><asp:Label ID="Label3" runat="server" Text="Spa Series:"></asp:Label></td> <td><asp:Label ID="Label4" runat="server" Text='<%#DataBinder.Eval(Container.DataItem, "SPASERIESVALUE") %>'></asp:Label></td> </tr> <tr> <td><asp:Label ID="Label5" runat="server" Text="Spa Model:"></asp:Label></td> <td><asp:Label ID="Label6" runat="server" Text='<%#DataBinder.Eval(Container.DataItem, "SPAMODELVALUE") %>'></asp:Label></td> </tr> <tr> <td><asp:Label ID="Label9" runat="server" Text="Acrylic Color:"></asp:Label></td> <td><asp:Label ID="Label10" runat="server" Text='<%#DataBinder.Eval(Container.DataItem, "ACRYLICCOLORVALUE") %>'></asp:Label></td> </tr> <tr> <td> <asp:Label ID="Label11" runat="server" Text="Cabinet Color:"></asp:Label> </td> <td> <asp:Label ID="Label12" runat="server" Text='<%#DataBinder.Eval(Container.DataItem, "CABPANCOLORVALUE") %>'></asp:Label> </td> </tr> <tr> <td> <asp:Label ID="Label17" runat="server" Text="Cabinet Type:"></asp:Label> </td> <td> <asp:Label ID="Label18" runat="server" Text='<%#DataBinder.Eval(Container.DataItem, "CABINETVALUE") %>'></asp:Label> </td> </tr> <tr> <td> <asp:Label ID="Label13" runat="server" Text="Cover Color:"></asp:Label> </td> <td> <asp:Label ID="Label14" runat="server" Text='<%#DataBinder.Eval(Container.DataItem, "COVERCOLORVALUE") %>'></asp:Label> </td> </tr> </table> <asp:Label ID="Label15" runat="server" Text="Options:"></asp:Label> <asp:Repeater ID="rptCustomSpaItem" runat="server"> <HeaderTemplate> <table> </HeaderTemplate> <ItemTemplate> <tr> <td> <asp:Label ID="Label1" runat="server" Text='<%#DataBinder.Eval(Container.DataItem, "PROPERTY") %>'></asp:Label> </td> <td> <asp:Label ID="Label2" runat="server" Text='<%#DataBinder.Eval(Container.DataItem, "VALUE") %>'></asp:Label> </td> </tr> </ItemTemplate> <FooterTemplate> </table> </FooterTemplate> </asp:Repeater> <table> <tr> <td style="padding-top:15px;padding-bottom:30px;"> <asp:Label ID="Label7" runat="server" Text="Configured Price:"></asp:Label> </td> <td style="padding-top:15px;padding-bottom:30px;"> <asp:Label ID="Label8" runat="server" Text='<%#DataBinder.Eval(Container.DataItem, "SPAVALUEVALUE") %>'></asp:Label> </td> </tr> </table> <asp:Label ID="Label16" runat="server" Text="------"></asp:Label> </ItemTemplate> <FooterTemplate></FooterTemplate> </asp:Repeater> 
+4
source share
2 answers

Is it true that a DataItem ALWAYS null ? Because maybe you just need to check the ItemType property before accessing the DataItem property:

 if(e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) { var data = e.Item.DataItem; // .... } 
+11
source

You need to check ItemType.

So, in your Event ItemDataBound.

 switch (e.Item.ItemType) { case ListItemType.Item: case ListItemType.AlternatingItem: RepeaterItem item = e.Item; Repeater ChildRepeater = (Repeater)item.FindControl("rptCustomSpaItem"); DataRowView dv = e.Item.DataItem as DataRowView; ChildRepeater.DataSource = dv.CreateChildView("sparelation"); ChildRepeater.DataBind(); } 
+1
source

Source: https://habr.com/ru/post/1334955/


All Articles