我在運行時根據傳入的配置構建了一個ASP.Net Telerik Radgrid,因此我的ASPX頁面上沒有radgrid標記。我試圖實現功能,我可以將一個按鈕添加到將顯示或隱藏列過濾器的網格標題。Telerik ASP.Net Radgrid顯示/隱藏篩選器
我使用的是Command Item Template是提供一種出現在顯示/隱藏按鈕,但是當我點擊該按鈕來顯示或隱藏與使用grid.get_masterTableView()功能ShowHideFilters
Javascript方法過濾器無法找到對電網的get_masterTableView()
方法目的。
任何想法爲什麼這種方法丟失或更好的選擇來實現我所需要的行爲?
從Telerik的API JavaScript示例
function getMasterTableView() {
var grid = $find("<%=RadGrid1.ClientID %>");
var masterTableView = grid.get_masterTableView();
}
頁
<%@ Page Language="VB" AutoEventWireup="false" CodeFile="ShowGrid.aspx.vb" Inherits="ShowGrid" %>
<%@ Register Assembly="Telerik.Web.UI" Namespace="Telerik.Web.UI" TagPrefix="telerik" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="ShowGrid" runat="server">
<telerik:RadScriptManager ID="ScriptManager" runat="server">
</telerik:RadScriptManager>
<telerik:RadAjaxManager ID="RadAjaxManager1" runat="server">
<AjaxSettings>
<telerik:AjaxSetting AjaxControlID="ConfigureGrid">
<UpdatedControls>
<telerik:AjaxUpdatedControl ControlID="ConfigureGrid" LoadingPanelID="AjaxLoadingPanel" />
</UpdatedControls>
</telerik:AjaxSetting>
</AjaxSettings>
</telerik:RadAjaxManager>
<telerik:RadAjaxLoadingPanel ID="AjaxLoadingPanel" runat="server"/>
<asp:SqlDataSource ID="PrimaryDataSource" runat="server"/>
</form>
<script type="text/javascript">
function ShowHideFilters()
{
var grid = document.getElementById("ConfigureGrid")
if (grid)
{
var masterTableView = grid.get_masterTableView();
window.alert(masterTableView.id)
}
window.alert(grid.id)
}
</script>
</body>
</html>
後面
012典建立從地上爬起來電網在Page_Init
Protected Sub Page_Init(sender As Object, e As EventArgs) Handles Me.Init
Try
BuildConfiguration()
CreateTitleObject()
CreateRadFilter()
LoadDataSource()
CreateRadGrid()
Catch ex As Exception
CreateExceptionDisplay(ex)
End Try
End Sub
項目模板
Friend Class RadGridCommandItemFilterTemplate
Implements ITemplate
Protected showHideFilterButton As Button
Public Sub New()
MyBase.New()
End Sub
Public Sub InstantiateIn(ByVal container As Control) Implements ITemplate.InstantiateIn
showHideFilterButton = New Button
showHideFilterButton.EnableTheming = True
showHideFilterButton.ID = "showHideFilterButton"
showHideFilterButton.Text = "Show/Hide Filters"
showHideFilterButton.CommandName = "ShowHideFilters"
showHideFilterButton.OnClientClick = "ShowHideFilters()"
container.Controls.Add(showHideFilterButton)
End Sub
End Class
添加項模板
grid.MasterTableView.CommandItemTemplate = New RadGridCommandItemFilterTemplate
作爲組件在運行時從代碼中創建的背後,我不能使用$ find方法。沒有
我已經更新了答案也許這代碼片段將是有益的給你 – Machet
無論如何,一定要設置網格的ID,創建的控件編程需要這些ID,使他們能夠回傳後裝入自己的ViewState。不要讓他們的一代機會和框架。 另外,添加一個「返回false」;語句在按鈕客戶端處理程序,如果你不想它回發(我沒有看到處理它的代碼,所以我認爲這是不需要的,你想要在客戶端上完成)。 – rdmptn