从JavaScript中获取RadGrid上RadRating的关联Id
Obtain the associated Id for RadRating on RadGrid from JavaScript
我使用的是Telerik的ASP.NET AJAX库,RadGrid中的每一行都有一个RadRating元素,并且需要获取RadRating被评级的行的关联Id(但使用Javascript),但是get_parent()
方法返回的是网格引用,而不是行。
如何获取RadRating行的GridDataItem
?
以下代码有时有效,但并非总是有效。我做错了什么?
<script type="text/javascript">
(function(global,undefined) {
function OnClientRating(controlRating,args) {
var row = controlRating.get_parent();
var userId = row.getDataKeyValue("UserId");
}
global.OnClientRating = OnClientRating;
})(window);
</script>
<rad:RadGrid runat="server" ID="gridUsers" Skin="Hay"
EnableAJAX="False"
AutoGenerateColumns="False"
GridLines="Both"
Width="100%"
AllowSorting="True"
OnItemDataBound="Grid_ItemDataBound">
<MasterTableView DataKeyNames="UserId" ClientDataKeyNames="UserId">
<Columns>
<rad:GridTemplateColumn HeaderText="Name" HeaderStyle-Width="180px" ItemStyle-Width="180px">
<ItemTemplate>
<%# Eval("FullName")%>
</ItemTemplate>
</rad:GridTemplateColumn>
<rad:GridTemplateColumn HeaderText="Rating" HeaderStyle-Width="100px" ItemStyle-Width="100px">
<ItemTemplate>
<rad:RadRating ID="ratAppraiserRating" runat="server" ItemCount="5" Value='<%# Eval("AverageRating")%>'
SelectionMode="Continuous" Precision="Item" Orientation="Horizontal" OnClientRating="OnClientRating"
OnRate="RatRating_Rate" AutoPostBack="true" />
</ItemTemplate>
</rad:GridTemplateColumn>
</Columns>
</MasterTableView>
<ClientSettings>
<Scrolling UseStaticHeaders="false" ScrollHeight="240px" AllowScroll="true" />
<Selecting AllowRowSelect="false" />
<ClientEvents OnRowDblClick="selectRow" />
</ClientSettings>
</rad:RadGrid>
这就是我的发现。get_parent()
方法根本不返回该行。我看到的只是转移视线。get_parent
返回作为网格的父控件,然后为了找到它所属的行,我找到了两个选项:
1) 获取HTML元素并遍历父节点,直到找到行并获得rowIndex
。并使用该索引从网格中获得相应的DataItem
。
var rowIndex = controlRating.get_element().parentNode.parentNode.rowIndex - 1;
2) 订阅网格的OnRowMouseOver
事件,并保留DataGridItem
的引用,并在真正需要时使用它。
var currentDataItem = undefined;
function onRowMouseOver(sender, eventArgs) {
currentDataItem = eventArgs.get_gridDataItem();
}
更新:Telerik的人建议第三种选择
3)
function OnClientRating(sender, args) {
var parentTableView = sender.get_parent();
var rowID = $telerik.$(sender.get_element()).closest("tr")[0].id;
var rowIndex = rowID.split("__")[1];
var dataItem = parentTableView.get_dataItems()[rowIndex];
var someCellText = dataItem.get_cell("ColumnUniqueName").innerHTML;
// add custom logic here
}
相关文章:
- 多维关联数组的最后一个索引
- node.js/javascript/couchdb视图到关联数组似乎不起作用
- Rails——处理多态关联上的Ajax destroy调用
- 我想将链接关联到动态创建的p元素上的相应文章
- ExtJS 4:编写带有模型关联的嵌套XML
- 具有关联数组数据集的D3.js表
- Sequelize associations:set[Models]添加新模型,而不是关联现有模型
- JavaScript JSON关联对象键和值都作为日期时间戳
- 选择框中带有关联的ng模型,选项中带有ng重复
- 后关联数组使用jquery ajax
- Sequelize:属性之间的命名冲突'播放列表'以及关联'播放列表'
- 获取关联单元格onchange的值
- 在不同的屏幕和分辨率上跟踪鼠标并将其关联起来
- 如何创建php函数或任何脚本/jquery Javascript,使我能够获取与复选框关联的值并添加它们
- 我应该如何循环通过和“;关联对象“;在javascript中
- 返回一个关联数组,而不是mongoose中的文档数组
- 如何在 Angular JS 中从关联数组创建多个复选框
- 如何更改与Backbone集合中的模型相关联的几个元素的css属性
- Sails.js获得多对多关联计数
- 从JavaScript中获取RadGrid上RadRating的关联Id