Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

C# ASP.NET update panel inside a repeater error

Tags:

c#

asp.net

I have a problem with an updatepanel when I put it inside a repeater control I get an error, and I need to refresh only a single post when the user click on a link button, here is my code...

    <asp:ScriptManager ID="ScriptManager1" runat="server">
                    </asp:ScriptManager>
                          <asp:Repeater ID="Repeater1" runat="server" 
                                OnItemCommand="MyButtonCommandEvent">
                                <ItemTemplate>
                                <asp:UpdatePanel ID="UpdatePanel3" runat="server">
                        <ContentTemplate>
                                    <div class="post">
                                        <asp:HiddenField ID="postID_hidden" runat="server" 
                                            Value='<%# DataBinder.Eval(Container.DataItem,"posts_ID") %>' />
                                        <div class="Thumb">
                                            <img src="thumbs/abdo_thumb.jpg"> </img></div>
                                        <span class="user"><%#DataBinder.Eval(Container.DataItem, "poster_name")%>
                                        </span>
                                        <div class="post-body">
                                            <p>
                                                <%#DataBinder.Eval(Container.DataItem,"description")%>
                                            </p>
                                        </div>
                                        <div class="post-options" style=" height:22px; ">
                                            <span class="first"><%#DataBinder.Eval(Container.DataItem,"post_date")%></span>
                                            <ul style="display:inline; list-style-type: none;">
                                                <li>
                                                    <div class="tooltip">
                                                        Comments
                                                        <img class="tool-img" src="Images/comments.png"> : <%#DataBinder.Eval(Container.DataItem,"comment_num") %> 
                                                        </img>
                                                    </div>
                                                </li>
                                                <li>
                                                    <div class="tooltip">
                                                        <asp:LinkButton ID="like_linkbtn" runat="server" CommandName="Like"><%#(DataBinder.Eval(Container.DataItem, "name_like").ToString() == "") ? "Like" : DataBinder.Eval(Container.DataItem, "name_like")%></asp:LinkButton>
                                                        <img class="tool-img" src="images/likes.png"> : <%#DataBinder.Eval(Container.DataItem,"like_counter") %>
                                                        </img></div>
                                                </li>
                                                <li>
                                                    <div class="tooltip">
                                                        <asp:LinkButton ID="hate_linkbtn" runat="server" CommandName="Hate"><%#(DataBinder.Eval(Container.DataItem, "name_hate").ToString() == "") ? "Hate" : DataBinder.Eval(Container.DataItem, "name_hate")%></asp:LinkButton>
                                                        <img class="tool-img" src="images/hate.png"> : <%#DataBinder.Eval(Container.DataItem,"hate_counter") %>
                                                        </img></div>
                                                </li>
                                            </ul>
                                        </div>
                                        <div class="finish">
                                        </div>
                                    </div>
                                    </ContentTemplate>
                    </asp:UpdatePanel>
                                </ItemTemplate>
                            </asp:Repeater>

The error is : Compiler Error Message: CS1061: 'System.Web.UI.Control' does not contain a definition for 'DataItem' and no extension method 'DataItem' accepting a first argument of type 'System.Web.UI.Control' could be found (are you missing a using directive or an assembly reference?). This is making me really frustrated please help. PS: It works if I removed the updatepanel and made it outside the repeater (The repeater inside the updatepanel instead of the updatepanel inside the repeater but that's not what I want)

like image 287
Abdelrahman Saeed Avatar asked Jun 04 '26 07:06

Abdelrahman Saeed


1 Answers

Another solution is to cast Container as IDataItemContainer (((IDataItemContainer)Container)).

Instead of:

<%# DataBinder.Eval(Container.DataItem, "Column") %>

Use:

<%# DataBinder.Eval(((IDataItemContainer)Container).DataItem, "Column") %>

This solution is ideal if you are casting the DataItem as an object, eg:

<%# ((MyClass)Container.DataItem).ColumnName %>

This becomes:

<%# ((MyClass)((IDataItemContainer)Container).DataItem).ColumnName %>
like image 109
johna Avatar answered Jun 05 '26 19:06

johna



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!