显示RadGrid的当前页面状态

本文关键字:状态 当前页 RadGrid 显示 | 更新日期: 2023-09-27 18:11:55

所以,我试图使用RadGrid控件显示类似"显示100的1-20"的东西。我将以下代码放入RadGrid1_PageIndexChanged事件中:

int showingRowsFrom = ((e.NewPageIndex + 1) * rgResults.PageSize) - rgResults.PageSize + 1;
int showingRowsTo;
if ((e.NewPageIndex + 1) == rgResults.PageCount)
{
    showingRowsTo = GridSource.Tables[0].Rows.Count;
}
else
{
    showingRowsTo = (e.NewPageIndex + 1) * rgResults.PageSize;
}
string rowCount = string.Format("Displaying {0}-{1} of {2}", showingRowsFrom, showingRowsTo, GridSource.Tables[0].Rows.Count);
lblResultsCountBottom.Text = lblResultsCountTop.Text = rowCount;

不幸的是,看起来这并没有做一个完整的回发,标签也没有得到更新。我该怎么做呢?我试着在客户端做这件事,也遇到了问题。$find没有定义

$(document).ready(function () {
    var grid = $find("<%=rgResults.ClientID%>");
    var mtv = grid.get_masterTableView();
    var pageIndex = mtv.get_currentPageIndex();
    alert(pageIndex);
});

下面是radgrid代码:

<radG:RadGrid ID="rgResults" runat="server" AllowMultiRowSelection="True" AllowPaging="True"
        AllowSorting="True" EnableAJAX="False" GridLines="None" OnItemCommand="rgResults_ItemCommand" OnItemDataBound="rgResults_ItemDataBound"
        PageSize="20"
        Skin="Default" Width="100%" OnPageIndexChanged="rgResults_PageIndexChanged" OnSortCommand="rgResults_SortCommand" OnInit="rgResults_Init" OnPreRender="rgResults_PreRender">
    <ClientSettings ApplyStylesOnClient="True">
    </ClientSettings>
    <ItemStyle CssClass="griditemtext" />
    <HeaderStyle CssClass="gridheadertext" />
    <FooterStyle CssClass="gridfootertext" />
    <AlternatingItemStyle CssClass="gridalternetitemtext" />
    <PagerStyle CssClass="gridpagertext" Mode="NumericPages" />
    <CommandItemStyle CssClass="gridcommandtext" />
    <SelectedItemStyle CssClass="gridselecteditemtext" />
    <MasterTableView AutoGenerateColumns="False"
        DataKeyNames="Article Number" Font-Bold="False" Font-Italic="False" CommandItemDisplay="None" Font-Overline="False"
        Font-Strikeout="False" Font-Underline="False" GridLines="Both">
        <ExpandCollapseColumn Visible="False">
            <HeaderStyle Width="19px" />
        </ExpandCollapseColumn>
        <RowIndicatorColumn Visible="False">
            <HeaderStyle Width="20px" />
        </RowIndicatorColumn>
        <PagerStyle Mode="NumericPages" />
        <Columns>
        </Columns>
    </MasterTableView>
</radG:RadGrid>

我不会发布所有列的代码,因为它们都是以相同的方式完成的,但这里是要点:-p

var hyperLinkColumn = new GridHyperLinkColumn
{
    DataNavigateUrlFields = new[] { "TransactionID" },
    Target = "_blank",
    DataNavigateUrlFormatString = @"~/w1/SearchResultDetail.aspx?id={0}",
    DataTextField = "Article Number",
    HeaderText = "Article Number",
    SortExpression = "Article Number",
    UniqueName = "ArticleNumber"
};
rgResults.Columns.Add(hyperLinkColumn);

显示RadGrid的当前页面状态

如果标签没有更新,您有AJAX,所以您需要确保在部分回发响应中包含标签。如果它尚未在UpdatePanel中,则将其包装在UpdatePanel中。如果它的UpdateMode是Always(默认值),事情应该立即工作。如果将其设置为Conditional,则需要调用其Update()方法。你可能还想把它的RenderMode设置为Inline,以避免破坏你的布局。

在客户端方法上-使用Sys.Application.Load事件,因为在此之前MS AJAX脚本控件不可用,因此会出现$find()问题。例如:

function alertMe() {
  var grid = $find("<%=rgResults.ClientID%>");
    var mtv = grid.get_masterTableView();
    var pageIndex = mtv.get_currentPageIndex();
    alert(pageIndex);
Sys.Application.remove_load(alertMe);
}
Sys.Application.add_load(alertMe);

看来我已经找到了问题的答案。我已经尝试了很多不同的东西,但看起来那个可能引用了错误的版本。

我正在使用:

Telerik.WebControls.GridBoundColumn

不是

Telerik.Web.UI.GridBoundColumn

例如

修改后,$find和其他ajax工具开始工作。也许我以前使用的是非ajax RadGrid,这可以解释它,我想…

但无论如何,感谢@rdmptn的所有帮助!