显示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);
如果标签没有更新,您有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的所有帮助!