所以,我试图使用RadGrid控件显示类似“显示1-20 of 100”的内容。我将以下代码放在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);
答案 0 :(得分:3)
如果标签未更新,则您有AJAX,因此您需要确保在部分回发响应中包含标签。如果它已经不在UpdatePanel中,请将其包装在一个中。如果其UpdateMode为Always(默认值),则应立即执行操作。如果将其设置为Conditional,则需要调用其Update()方法。您可能还希望将其RenderMode设置为Inline以避免破坏布局。
在客户端方法上 - 使用Sys.Application.Load事件,因为在此之前MS AJAX脚本cotnrols不可用,因此$ 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);
答案 1 :(得分:0)
好吧,我似乎找到了问题的答案。我已经尝试了很多不同的东西,但看起来那样做的可能就是引用了错误的版本。
我正在使用:
Telerik.WebControls.GridBoundColumn
而不是
Telerik.Web.UI.GridBoundColumn
例如。
一旦我改变了这一点,$ find和其他ajax开始工作。也许我之前使用的是非AJAX RadGrid,这可以解释它,我想......
但无论如何,感谢@rdmptn的所有帮助!