我在运行时根据传入的配置构建了一个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