Asp.Net: Gridview OnPageIndexChanging не запускающий серверный метод - PullRequest
0 голосов
/ 06 октября 2011

Я не могу изменить индекс страницы вида сетки.Метод сервера для OnPageIndexChanging вообще не запускается.Я не знаю, что я делаю здесь не так.

Вот мой gridview

<asp:GridView ID="VideoCommentsGrid" runat="server" 
                        OnRowDataBound="VideoCommentsGrid_RowDataBound" 
                        OnPageIndexChanging="VideoCommentsGrid_PageIndexChanging" allowpaging="true" 
                        CssClass="tables" 
                        EmptyDataText="<div class='notice show bottom'>No Comments found.</div>" 
                        AutoGenerateColumns="False" >
                <Columns>
                    <asp:TemplateField HeaderStyle-HorizontalAlign="center" HeaderStyle-Width="70" ItemStyle-HorizontalAlign="center">
                        <HeaderTemplate>
                            Approve
                            <br />
                            <input id="ChkAllApprovedItems"  type="checkbox" />
                        </HeaderTemplate>
                        <ItemTemplate>
                            <asp:CheckBox ID="chkApproval" Checked='<%#Eval("IsApproved").ToString()=="1"?true:false %>'  runat="server"  />
                            <asp:Label ID="lblCommentID" runat="server" Text='<%#Eval("CommentId") %>' CssClass="hide"/>
                         </ItemTemplate>
                        <HeaderStyle HorizontalAlign="Center" />
                        <ItemStyle HorizontalAlign="Center" />
                    </asp:TemplateField>

                     <asp:TemplateField HeaderStyle-HorizontalAlign="center" HeaderStyle-Width="70" ItemStyle-HorizontalAlign="center">
                        <HeaderTemplate>
                            Reject
                            <br />
                            <input id="ChkAllRejectedItems"  type="checkbox" />
                        </HeaderTemplate>
                        <ItemTemplate>
                            <asp:CheckBox ID="chkReject" Checked='<%#Eval("IsRejected").ToString()=="1"?true:false %>'  runat="server"  />
                         </ItemTemplate>
                        <HeaderStyle HorizontalAlign="Center" />
                        <ItemStyle HorizontalAlign="Center" />
                    </asp:TemplateField>

                    <asp:TemplateField HeaderText="User Name" HeaderStyle-Width="70" >
                        <ItemTemplate>
                            <asp:Label ID="lblUserName" runat="server" Text='<%#Eval("FirstName")%>'>  </asp:Label>
                        </ItemTemplate>
                        <HeaderStyle HorizontalAlign="Center" Width="150" />
                        <ItemStyle HorizontalAlign="Left" CssClass="wordWrap" Width="150" />
                    </asp:TemplateField>
                    <asp:TemplateField HeaderText="Comments" HeaderStyle-Width="70" >
                        <ItemTemplate>
                            <asp:Label ID="lblComment" runat="server" Text='<%#Eval("VideoComment") %>' />
                        </ItemTemplate>
                        <HeaderStyle HorizontalAlign="Center" Width="150" />
                        <ItemStyle HorizontalAlign="Left" CssClass="wordWrap" Width="150" />
                    </asp:TemplateField>
                    <asp:TemplateField HeaderText="Comment Time* ">
                        <ItemTemplate>
                            <asp:Label ID="lblCommentDate" runat="server" Text='<%#(Eval("CommentCreatedDate"))%>'> </asp:Label>
                        </ItemTemplate>
                        <HeaderStyle HorizontalAlign="Center" Width="80" />
                        <ItemStyle HorizontalAlign="Center" Width="80" />
                    </asp:TemplateField>

                </Columns>
                <HeaderStyle Height="30" />
                <PagerStyle HorizontalAlign="Center" CssClass="footer" />
                <AlternatingRowStyle CssClass="odd" />

            </asp:GridView>

Мой код на стороне сервера выглядит следующим образом:

protected void Page_Load(object sender, EventArgs e)
{
        LoadCommentsGridView(VideoCommentsGrid.PageIndex);
}

protected void VideoCommentsGrid_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if (!e.Row.RowType.Equals(DataControlRowType.DataRow)) return;

}
protected void VideoCommentsGrid_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
    VideoCommentsGrid.PageIndex = e.NewPageIndex;
    LoadCommentsGridView(VideoCommentsGrid.PageIndex);
    hidCheckedValue.Value = string.Empty;
}
protected void LoadCommentsGridView(int PageIndex)
{
    SetPageIndex(PageIndex);
    LoadDefaultGrid();
}
private void LoadDefaultGrid()
{
    VideoCommentsGrid.PageSize = CurrentSchoolDetails.PageViewCount;
    IList<Comment> allComments = CommentRepository.GetAllCommentsByVideoID(VideoID);
    BindDataControls.BindGridView(VideoCommentsGrid, allComments);
}

Пожалуйста, помогите мнеСпасибо.

Ответы [ 2 ]

0 голосов
/ 06 октября 2011

Я думаю, что это происходит из-за того, что вы привязываете данные к GridView при каждой загрузке страницы, где вам нужно только сначала привязать данные один раз, а затем снова при изменении индекса страницы.

Попробуйте изменить код в методе Page_Load следующим образом:

protected void Page_Load(object sender, EventArgs e)
{
    if(!IsPostBack)
    {
        LoadCommentsGridView(VideoCommentsGrid.PageIndex);
    }
}
0 голосов
/ 06 октября 2011

в методе rowdatabound попробуйте закомментировать этот фрагмент кода и посмотреть, что произойдет.

//if (!e.Row.RowType.Equals(DataControlRowType.DataRow)) return;
...