如何向RadButton的OnClientClicking函数传递参数并在确认弹窗中显示记录编号
我来帮你搞定这个问题!你想要在RadButton的删除确认弹窗里显示具体的记录编号,同时还要正确传递参数对吧?之前直接传参数导致页面崩溃,大概率是因为没处理好RadButton事件默认的sender和args参数,我给你两种可行的解决方案:
方法一:通过匿名函数中转传递自定义参数
这种方法直接把记录编号通过匿名函数传递给你的DeleteConfirm函数,同时保留RadButton事件必需的sender和args参数,避免出现页面崩溃的情况。
首先修改客户端脚本,给DeleteConfirm函数新增一个接收记录编号的参数:
<script> function DeleteConfirm(sender, args, recordNo) { // 拼接包含记录编号的确认提示 var confirmMsg = 'Confirm to Delete Record (' + recordNo + ')?'; // 控制是否取消按钮的提交操作 args.set_cancel(!confirm(confirmMsg)); } </script>
然后修改RadButton的OnClientClicking属性,用匿名函数来中转参数:
<telerik:RadButton ID="btnDelete" runat="server" Skin="Windows7" Text="Delete" CommandName="Delete" CommandArgument='<%# Eval("CueId") + "|" + Eval("RevID") + "|" + Eval("No") %>' <!-- 用匿名函数把默认参数和自定义的记录编号一起传给DeleteConfirm --> OnClientClicking="function(sender, args){ DeleteConfirm(sender, args, '<%# Eval("No").ToString() %>'); }" visible='<%# If(Eval("AdminPage").ToString() = "Yes", true, false) %>' Enabled='<%# If(Eval("ReadOnly").ToString() = "Y", true, false) %>' > </telerik:RadButton>
方法二:从CommandArgument中提取记录编号
观察你的代码发现,CommandArgument里已经拼接了No字段(格式是CueId|RevID|No),所以我们可以直接从这里提取记录编号,不用额外传递参数,这样更简洁:
只需要修改客户端脚本即可,OnClientClicking保持原来的绑定方式:
<script> function DeleteConfirm(sender, args) { // 从按钮的CommandArgument中拆分出各个参数 var argParts = sender.get_commandArgument().split('|'); // 第三个部分就是我们需要的记录编号No var recordNo = argParts[2]; // 拼接确认提示 var confirmMsg = 'Confirm to Delete Record (' + recordNo + ')?'; args.set_cancel(!confirm(confirmMsg)); } </script>
RadButton的OnClientClicking属性保持不变:
OnClientClicking="DeleteConfirm"
这两种方法都能实现你要的效果,你可以根据自己的习惯选择其中一种。
内容来源于stack exchange
相关产品推荐
相关产品推荐

