gpt4 book ai didi

javascript - Telerik ASP.Net Radgrid 显示/隐藏过滤器

转载 作者:行者123 更新时间:2023-11-28 01:06:56 25 4
gpt4 key购买 nike

我正在运行时基于传入的配置构建 ASP.Net Telerik Radgrid,因此我的 ASPX 页面上没有 radgrid 标记。我正在尝试实现可以​​在网格标题中添加一个按钮来显示或隐藏列过滤器的功能。

我正在使用Command Item Template提供显示/隐藏按钮,但当我单击按钮时,使用 ShowHideFilters Javascript 方法使用 grid.get_masterTableView() 显示或隐藏过滤器函数无法在网格对象上找到 get_masterTableView() 方法。

知道为什么缺少此方法或者有更好的替代方法来实现我所需的行为吗?

Telerik Radgrid Client API

来自 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

最佳答案

请检查您是否有正确的网格 ID 以及是否使用 $find 方法。提供的代码有点困惑,我不确定调用了哪一部分。

在函数 getMasterTableView 中,您使用 $find 但我猜您的 id 错误。另外,如果此函数位于 javascript 文件中,则“<%=RadGrid1.ClientID %>”将不会解析为正确的 ID。它必须位于 aspx 文件中才能执行此操作。

在函数 ShowHideFilters 中,您使用了错误的函数 getElementById 将返回 DOM 对象,而不是 Telerik 对象。另请注意,您的网格具有“TestGrid”id。

更新:要获取主表,您需要使用 find 方法。如果您想要更通用的解决方案,那么我建议向您的按钮添加简单的 css 类。然后在 onLoad 事件中向这些按钮添加处理程序。如果您有放置在网格内的 jQuery 元素,那么您可以使用以下函数动态定位网格:

function getParentGrid($element) {
var $parentGrid = $element.closest("div.RadGrid");
var parentGridId = $parentGrid[0].id;
return window.$find(parentGridId);
}

关于javascript - Telerik ASP.Net Radgrid 显示/隐藏过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24956051/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com