Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#ASP.NET更新面板内部的中继器错误_C#_Asp.net - Fatal编程技术网

C#ASP.NET更新面板内部的中继器错误

C#ASP.NET更新面板内部的中继器错误,c#,asp.net,C#,Asp.net,当我把updatepanel放在repeater控件中时,我遇到了一个问题,我得到了一个错误,当用户单击链接按钮时,我只需要刷新一篇文章,这是我的代码 <asp:ScriptManager ID="ScriptManager1" runat="server"> </asp:ScriptManager> <asp:Repeater ID="Repeater1" runa

当我把updatepanel放在repeater控件中时,我遇到了一个问题,我得到了一个错误,当用户单击链接按钮时,我只需要刷新一篇文章,这是我的代码

    <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”的定义,并且找不到接受“System.Web.UI.Control”类型的第一个参数的扩展方法“DataItem”(是否缺少using指令或程序集引用?)。 这让我很沮丧,请帮助我。
PS:如果我移除updatepanel并将其放在中继器外部(中继器放在updatepanel内部,而不是中继器内部的updatepanel,但这不是我想要的)

将更新面板放在中继器的外面,它就可以工作了。它会起作用的

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


  • 评论 :
  • :
  • :

另一种解决方案是将容器强制转换为IDataItemContainer(
((IDataItemContainer)Container)

而不是:

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

使用:


如果要将数据项强制转换为对象,此解决方案非常理想,例如:

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

这就变成了:

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


在Container.DataItem中,容器是imediate父控件。将更新面板包裹在其上时,父面板将成为更新面板,而不是中继器。我认为您应该使用Repeater服务器端事件来设置正确的值。@Akhil Thnx错误可以通过将DataBinder.Eval(Container.DataItem,“coloumn_name”)替换为Eval(“coloumn_name”)来解决,但还有一个问题,当用户单击更新面板中的按钮时,如何强制执行回发操作
<%# ((MyClass)((IDataItemContainer)Container).DataItem).ColumnName %>