ajax с ошибкой выдачи данных - PullRequest
0 голосов
/ 21 июля 2011

У меня есть элемент управления списком данных, который находится внутри заполнителя содержимого.

<asp:Content ID="Content3" ContentPlaceHolderID="MainContent" runat="Server">
    <asp:ScriptManager ID="MainScriptManager" runat="server" />
    <asp:UpdatePanel ID="UpdatePanel1" runat="server">
        <ContentTemplate>
            <asp:DataList ID="dlProdocut" runat="server" RepeatColumns="3" EditItemIndex="-1"
                RepeatDirection="Horizontal" OnItemDataBound="dlProdocut_ItemDataBound">
                <ItemTemplate>
                    <asp:Table ID="Table1" runat="server" border="0" CellSpacing="0" CellPadding="0">
                        <asp:TableRow>
                            <asp:TableCell Height="10" HorizontalAlign="Center" VerticalAlign="Top">

                            </asp:TableCell>
                        </asp:TableRow>
                        <%--Image--%>
                        <asp:TableRow>
                            <asp:TableCell Height="150" Width="7" HorizontalAlign="left" VerticalAlign="top">
                                <asp:HyperLink ID="hyrProductImg" runat="server">
                              <img alt='<%# DataBinder.Eval(Container.DataItem,"Title")%>' src="../images/<%# DataBinder.Eval(Container.DataItem,"SmallImage") %>" border="0" width="226" height="166" />
                                </asp:HyperLink>
                            </asp:TableCell>
                            <asp:TableCell Width="5">  </asp:TableCell>
                        </asp:TableRow>
                        <%--Title--%>
                        <asp:TableRow>
                            <asp:TableCell Height="45" Width="7" CssClass="product-name" HorizontalAlign="Center"
                                VerticalAlign="Top">
                            <strong> <%# DataBinder.Eval(Container.DataItem, "Title")%></strong>
                            </asp:TableCell>
                        </asp:TableRow>
                        <%--ShortDescription--%>
                        <asp:TableRow>
                            <asp:TableCell Width="7" HorizontalAlign="Justify" VerticalAlign="Top" CssClass="testimonial-text">
                                <asp:Label ID="Label1" runat="server" Text='<%# DataBinder.Eval(Container.DataItem,"ShortDescription")%>'></asp:Label>
                            </asp:TableCell>
                        </asp:TableRow>
                        <%--Read More--%>
                        <asp:TableRow>
                            <asp:TableCell HorizontalAlign="Left">
                                <asp:HyperLink ID="lnkProductDetails" CssClass="read-more" runat="server">Read More &rarr;</asp:HyperLink>
                            </asp:TableCell>
                        </asp:TableRow>
                        <asp:TableRow>
                            <asp:TableCell Height="60" HorizontalAlign="Justify" VerticalAlign="Top" CssClass="testimonial-text">

                            </asp:TableCell>
                        </asp:TableRow>
                    </asp:Table>
                </ItemTemplate>
            </asp:DataList>
        </ContentTemplate>
        <Triggers>
            <asp:AsyncPostBackTrigger ControlID="dlProdocut" />
            <asp:AsyncPostBackTrigger ControlID="btnNext" />
        </Triggers>
    </asp:UpdatePanel>
    <asp:Label ID="lblPage" runat="server" Text="" />
    <asp:Button ID="btnPrevious" runat="server" Text="&lt;&lt;" />
    <asp:Button ID="btnNext" runat="server" Text="&gt;&gt;" OnClick="btnNext_Click" />
    <asp:Panel ID="BottomPager_Panel" runat="server">
    </asp:Panel>
</asp:Content>

При нажатии следующей кнопки я делаю пейджинг на элементе управления и перехожу на следующую страницу. На странице загрузки я делаю это

if (!IsPostBack)
    {
        pageCount = 1;
        PageNo = 1;
        startPage = 6 * (PageNo - 1) + 1;
         lastPage = startPage + 5;
         bindDataList();
    }

Это мой код для bindDataList

public void bindDataList()
{

    string source = ConfigurationManager.ConnectionStrings["Cad-B"].ToString();
    SqlConnection con = new SqlConnection(source);
    SqlCommand cmd = new SqlCommand("sp_GetProductPagingByMenuId", con);
    //cmd.CommandType = CommandType.StoredProcedure;
    //cmd.CommandText = "sp_GetProductPagingByMenuId";
    con.Open();
    cmd.CommandType = CommandType.StoredProcedure;
    cmd.Parameters.Add("@startPage", startPage);
    cmd.Parameters.Add("@lastPage", lastPage);
    SqlDataReader dr =    cmd.ExecuteReader();
    DataTable dt = new DataTable();
    dt.Load(dr);

    dlProdocut.DataSource = dt;
    dlProdocut.DataBind();
}

При нажатии следующей кнопки я написал следующий код

protected void btnNext_Click(object sender, EventArgs e)
{
    dlProdocut.DataSource = null;
    dlProdocut.DataBind();
    pageCount++;
    PageNo = pageCount;
    startPage = 6 * (PageNo - 1) + 1;
    lastPage = startPage + 5;
    bindDataList();
}

Проблема, с которой я сталкиваюсь, заключается в том, что она каждый раз показывает мне один и тот же контент, который загружается в первый раз на странице. Когда я отлаживаю код, я вижу, что список данных загружен новыми записями, но это не отражается на странице, я пытался удалить кеширование, но это не помогло. В тот момент, когда я удалил следующую кнопку из секции триггера, она дает мне правильную запись, но полная страница возвращает сообщение, которое мне не нужно. Это удаленный код

<asp:AsyncPostBackTrigger ControlID="btnNext" />

Пожалуйста, помогите, я застрял с этим с давних пор. Я новичок в этой технологии. Заранее спасибо.

1 Ответ

0 голосов
/ 25 июля 2011

Попробуйте:

<Triggers> 
<asp:AsyncPostBackTrigger ControlID="DatalistId$btnNext" />
</Triggers>
...