【发布时间】:2014-09-17 07:51:08
【问题描述】:
我正在运行时基于传入的配置构建一个 ASP.Net Telerik Radgrid,因此我的 ASPX 页面上没有 radgrid 标记。我正在尝试实现可以在网格标题中添加一个按钮以显示或隐藏列过滤器的功能。
我正在使用Command Item Template 来提供正在出现的显示/隐藏按钮,但是当我单击该按钮以使用ShowHideFilters Javascript 方法使用grid.get_masterTableView() 函数显示或隐藏过滤器时,它找不到网格对象上的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>
背后的代码
在 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
【问题讨论】:
标签: javascript asp.net vb.net telerik radgrid