2014-07-07 123 views
1

所以,我試圖使用RadGrid控件顯示「顯示1-20或100」。我把下面的代碼RadGrid1_PageIndexChanged事件:顯示RadGrid當前頁面統計

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

好吧,似乎我已經找到了我的問題的答案。我已經嘗試過很多不同的東西,但看起來像是它可能引用了錯誤的版本。

我用:

Telerik.WebControls.GridBoundColumn的

代替

Telerik.Web.UI.GridBoundColumn

例如。

一旦我改變了這一點,$ find和其他ajax的東西開始工作。也許我之前使用的是非AJAX RadGrid,這可以解釋它,我想...

但無論如何,感謝@rdmptn爲您提供的所有幫助!

3

如果標籤沒有更新,您有AJAX,因此您需要確保在部分回發響應中包含標籤。如果它不在UpdatePanel中,則將其封裝在一箇中。如果它的UpdateMode是Always(默認值),事情應該立即生效。如果將其設置爲Conditional,則需要調用其Update()方法。您可能還想將其RenderMode設置爲內聯以避免打破布局。

在客戶端方法 - 使用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); 
+0

這並沒有最終幫助在這種情況下,但肯定是很好的信息!我意識到我需要拖動一個腳本管理器到$ find函數才能工作的頁面上。不幸的是,我的網格變量仍然是空的,但它是朝着正確方向邁出的一步。 – Relevant

+1

我甚至都不知道如何在沒有腳本管理器的情況下獲得與MS AJAX相關的任何東西。通過我的示例,唯一可以防止網格變量獲得適當引用的東西是其他地方的JavaScript錯誤,或者rgResults網格不可見(即,Visible = false)。如果兩者都不是這樣 - 請發佈完整的代碼以顯示問題,以便我們可以對其進行破解。 – rdmptn

+0

除了查找外,我沒有在頁面上有任何AJAX。我是這個項目的新手,我知道這有點古怪。用你的代碼示例,我能夠找出問題(當2個AJAX函數不工作時,它變得更加清晰:-p)。似乎有一個問題可能是我需要使用RadScriptManager?但是這似乎導致了各種問題。通過使用標準腳本管理器提供的代碼,$ find返回null。它正在進入alertMe()函數。 – Relevant