具有层次结构的 Telerik radgrid 不在 OnHierarchyExpanding 事件上运行客户端 javascript
Posted
技术标签:
【中文标题】具有层次结构的 Telerik radgrid 不在 OnHierarchyExpanding 事件上运行客户端 javascript【英文标题】:Telerik radgrid with Hierarchy doesn't run client javascript on OnHierarchyExpanding event 【发布时间】:2014-04-19 18:33:01 【问题描述】:我有一个 javascript,我需要在点击展开链接时运行
<telerik:RadCodeBlock ID="RadCodeBlock1" runat="server">
<script type="text/javascript">
function RowExpanded(sender, eventArgs)
alert(123);
</script>
</telerik:RadCodeBlock>
我使用 HierarchyLoadMode="Conditional" 在我的 aspx 页面上加载内部网格数据。
<telerik:RadAjaxPanel runat="server">
<telerik:RadGrid ID="rgUsersInSessions" ShowStatusBar="true" OnNeedDataSource="OnNeedDataSourceForGrid" OnDetailTableDataBind="OnDetailTableDateBind" OnItemDataBound="OnAnswerItemBound" runat="server" AutoGenerateColumns="False" PageSize="10"
AllowSorting="True" AllowMultiRowSelection="False" AllowPaging="True" GridLines="None">
<ClientSettings AllowExpandCollapse="True">
<Selecting AllowRowSelect="True"></Selecting>
<ClientEvents OnHierarchyExpanding="RowExpanded" />
</ClientSettings>
<PagerStyle Mode="NumericPages"></PagerStyle>
<MasterTableView EnableHierarchyExpandAll="true" AllowMultiColumnSorting="True" ClientIDMode="Static" HierarchyLoadMode="Conditional">
<DetailTables>
<telerik:GridTableView HierarchyLoadMode="Conditional" EnableHierarchyExpandAll="true" Width="100%" runat="server" ClientIDMode="Static" ShowHeader="False">
<Columns>
<telerik:GridTemplateColumn UniqueName="userQuestion">
<ItemTemplate>
<asp:Label Text='<%# DataBinder.Eval(Container.DataItem, "EventId").ToString() %>'></asp:Label>
</ItemTemplate>
</telerik:GridTemplateColumn>
</Columns>
</telerik:GridTableView>
</DetailTables>
<Columns>
<telerik:GridBoundColumn UniqueName="SessionUserId" Display="False" AllowFiltering="false" DataField="SessionUserId" DataType="System.Int32">
</telerik:GridBoundColumn>
</Columns>
</MasterTableView>
</telerik:RadGrid>
</telerik:RadAjaxPanel>
当我单击网格上的展开链接时,它会展开内表并在其中加载表日期,但我的 javascript 函数 (RowExpanded) 没有运行。 在页面加载时,我可以在页面上找到该功能,但单击展开链接后,我再也看不到它了。
【问题讨论】:
我把后面重复的问题和这个合并了。 【参考方案1】:知道其中一些功能如何仅在通过客户端绑定时可用,我假设该方法未运行,因为您没有使用 JavaScript API。某些事情只有在您使用该 API 时才有效。
你说你再也看不到这个方法了。根据您检查页面的方式,它可能是您正在使用的工具(我知道在使用 ajax 面板时,它会更改 Firebug 等工具中的可见响应输出)。
【讨论】:
【参考方案2】:自己发现了问题。
我将 ClientIDMode="Static" 设置为
<MasterTableView EnableHierarchyExpandAll="true" AllowMultiColumnSorting="True" ClientIDMode="Static" HierarchyLoadMode="Conditional">
在
<telerik:GridTableView HierarchyLoadMode="Conditional" EnableHierarchyExpandAll="true" Width="100%" runat="server" ClientIDMode="Static" ShowHeader="False">
但是这个元素没有 ID 设置器。它在哪里生成 onClick javascript
$find("")
返回 null。
【讨论】:
以上是关于具有层次结构的 Telerik radgrid 不在 OnHierarchyExpanding 事件上运行客户端 javascript的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 JavaScript 刷新 Telerik RadGrid 控件?