我有一个启用了多个选择的RadGrid:
<telerik:RadGrid runat="server" ID="RadGrid1" AutoGenerateColumns="false" AllowMultiRowSelection="true">
<MasterTableView TableLayout="Fixed">
<Columns>
<telerik:GridBoundColumn DataField="Dialog" HeaderText="Dialog" DataType="System.String" />
</Columns>
</MasterTableView>
<ClientSettings EnableRowHoverStyle="true">
<Selecting AllowRowSelect="True" />
<ClientEvents OnRowSelected="RowSelected"/>
</ClientSettings>
</telerik:RadGrid>
OnRowSelected事件触发所选的每一行。选择10行时,事件会被触发10次。很简单。
我的问题是,当选择了所有要选择的行时(由于多项选择),我可以听取哪些事件?我需要使用所选行的ID发出一个帖子请求,我不认为让10个帖子请求成为一个好主意。我可以查询网格以获取所选行,我只需要知道何时执行;理想情况下,不涉及超时。我必须忽略这一事件。
答案 0 :(得分:1)
使用超时功能:
var rowSelectedTimeout;
function RowSelected(rowObject) {
if (window.rowSelectedTimeout) {
// If selecting multiple rows, clear the previous row's rowSelectedTimeout
window.clearTimeout(window.rowSelectedTimeout);
}
rowSelectedTimeout = window.setTimeout(function () {
window.rowSelectedTimeout = null;
alert('rows selected');
}, 10);
}
答案 1 :(得分:0)
这里的诀窍是如何弄清楚用户何时“停止”选择。如果通过shift +点击完成多项选择,那么你有很多项目可以通过,但是如果你有相同数量的项目(10)并且用户ctrl +点击它们中的每一项呢?它很容易变得有点过于复杂。不幸的是,RadGrid中没有一个事件可以在多个选择操作选择完所有行后订阅该触发器。
这里你最好的选择可能是有一个外部按钮或类似的触发这个帖子的东西,然后使用RadGrid的SelectedItems集合,因为这样可以允许更多批处理方法而不是每行发生的帖子