簡體   English   中英

C#ASP.NET更新面板內的轉發器錯誤

[英]C# ASP.NET update panel inside a repeater error

當我把它放在轉發器控件中時,我遇到一個updatepanel的問題我得到一個錯誤,當用戶點擊一個鏈接按鈕時,我需要刷新一個帖子,這里是我的代碼...

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

錯誤是:編譯器錯誤消息:CS1061:'System.Web.UI.Control'不包含'DataItem'的定義,並且沒有擴展方法'DataItem'接受類型'System.Web.UI.Control'的第一個參數可以找到(你錯過了使用指令或程序集引用嗎?)。 這讓我非常沮喪,請幫忙。 PS:如果我刪除了更新面板並將其放在轉發器之外(更新面板內的轉發器而不是轉發器內的更新面板,但這不是我想要的),它可以工作

另一種解決方案是將Container轉換為IDataItemContainer( ((IDataItemContainer)Container) )。

代替:

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

采用:

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

如果您將DataItem作為對象進行轉換,則此解決方案是理想的,例如:

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

這變為:

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

將更新面板放在轉發器的一側。 它會工作。

                               <asp:UpdatePanel ID="UpdatePanel3" runat="server">
                        <ContentTemplate>
<asp:Repeater ID="Repeater1" runat="server" 
                                OnItemCommand="MyButtonCommandEvent">
                                <ItemTemplate>
                                    <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>
                                </ItemTemplate>
                            </asp:Repeater>

                                    </ContentTemplate>
                    </asp:UpdatePanel>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM