c# - 单击超链接会导致更新面板执行完整回发吗?

标签 c# asp.net updatepanel partial-postback

当我只是尝试进行部分回发时,更新面板会进行完整回发。我只想在单击上一页和下一页的超链接时能够更新中继器而不是更新整个页面。

   protected void Page_Load(object sender, EventArgs e)
{
    PagedDataSource objpd = new PagedDataSource();

    string connStr = ConfigurationManager.ConnectionStrings["yafnet"].ConnectionString;
    SqlConnection mySQLconnection = new SqlConnection(connStr);
    if (mySQLconnection.State == ConnectionState.Closed)
    {
        mySQLconnection.Open();
    }

    SqlCommand mySqlSelect = new SqlCommand("SELECT * FROM [Comments]", mySQLconnection);
    mySqlSelect.CommandType = CommandType.Text;
    SqlDataAdapter mySqlAdapter = new SqlDataAdapter(mySqlSelect);
    DataTable table = new DataTable();
    mySqlAdapter.Fill(table);


    objpd.DataSource = table.DefaultView;
    objpd.AllowPaging = true;
    objpd.PageSize = 1;

    int currentPage;

    if (Request.QueryString["page"] != null)
    {
        currentPage = Int32.Parse(Request.QueryString["page"]);
    }
    else
    {
        currentPage = 1;
    }

    objpd.CurrentPageIndex = currentPage - 1;
    // Label1.Text = "Page " + currentPage + " of " + pds.PageCount;

    if (!objpd.IsFirstPage)
    {
        linkPrev.NavigateUrl = Request.CurrentExecutionFilePath + "?page=" + (currentPage - 1);



    }

    if (!objpd.IsLastPage)
    {
        linkNext.NavigateUrl = Request.CurrentExecutionFilePath + "?page=" + (currentPage + 1);



    }

    Repeater1.DataSource = objpd;
    Repeater1.DataBind();

}

这是我的 HTML

<div class="comment">

    <asp:UpdatePanel ID="UpdatePanel1" UpdateMode="Conditional" runat="server">

        <ContentTemplate>
            <asp:Repeater ID="Repeater1" runat="server">

                <HeaderTemplate>
                    <table class="commentsx" cellspacing="0">
                </HeaderTemplate>

                <ItemTemplate>

                    <tr>
                        <td class="name">
                            <div class="right">
                                <%# Eval("CommentUserName") %>
                            </div>
                            <div class="left">
                                <%# Eval("CommentDateTime") %>
                            </div>
                        </td>


                    </tr>
                    <tr>
                        <td>
                            <div class="mess">
                                <%# Eval("CommentMessage") %>
                            </div>
                        </td>
                    </tr>


                </ItemTemplate>


                <FooterTemplate>
                    </table>
                </FooterTemplate>


            </asp:Repeater>

            <asp:HyperLink ID="linkPrev" runat="server">Previous Page</asp:HyperLink>
            <asp:HyperLink ID="linkNext" runat="server">Next Page</asp:HyperLink>
        </ContentTemplate>



        <Triggers>
            <asp:AsyncPostBackTrigger ControlID="Button1" EventName="DataBinding" />
        </Triggers>



    </asp:UpdatePanel>

</div>

最佳答案

Hyperlink 控件根本不执行回发,它们评估为将执行 GET 而不是 POST 的常规链接。

由于您似乎想要看起来像链接的东西,但执行回发而不是 GET,因此您需要的是 LinkBut​​ton。它看起来像一个链接,但作用就像一个按钮并执行回发。

关于c# - 单击超链接会导致更新面板执行完整回发吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13366429/

相关文章:

c# - Log4Net/C# - 禁用默认日志记录

c# - 如何从我的代码隐藏中访问 XAML 对象的绑定(bind)属性?

asp.net - 什么是 ASP.NET MVC?

asp.net - AngularJS 事件与 ASP.NET UpdatePanel

jquery - Accordion 脚本在 ajax 更新面板中不起作用

c# - 如何对每个输入将数组加 1

c# - 以编程方式设置文本区域不起作用 C#

asp.net - 如何清除 Windows Vista 上的 Visual Studio 缓存?

c# - 如何将 jqGrid 与 C#/ASP.NET 和 JSON.NET(没有 AJAX.NET 的东西)一起使用?

asp.net - 动态更新面板和用户控件问题