如何解决执行一个按钮单击事件,按钮被放置在dojox.grid.DataGrid内部
我认为,您需要调整服务器端代码以处理Ajax发布请求以发送邮件并dojo.xhrPost
在用户单击按钮时使用方法。您的JS代码可能如下所示:
function sendMailHandler(evt, item) {
dojo.xhrPost({
url: "/2_8_2012/jsp/SendMailReminder.jsp",
content: {
'SendMail': item
},
error: function() {
alert("Sent failure");
},
load: function(result) {
alert("Email sent with result: " + result);
}
});
dojo.stopEvent(evt);
}
function sendmail(item) {
return "<button onclick='sendMailHandler(arguments[0], \"" + item + "\")'>Send Mail</button>";
}
请注意,dojo.stopEvent(evt);
in sendMailHandler
用于停止事件冒泡并防止RowClick
引发事件。
也dojo.xhrGet
有类似的语法来执行ajax GET请求,您可以使用它代替jQuery$.get
。您也可以在我的示例中使用,dojo.xhrGet
而不是使用dojo.xhrPost
它,因为它有可能无需调整就可以与您的后端一起使用,但是POST
(或ajax表单提交)在语义上会更正确。
关于“试图注册一个id =“ something”,您应该调整代码以避免ID重复,或者显示导致错误的代码。
解决方法
我有一个dojox.grid.DataGrid
。在这种情况下,将显示一组值,并填充最后两列,buttons
这些列是根据使用中的formatter
属性从数据库检索的数据动态创建的gridStruture
。现在,我的网格状况良好。按钮也很好。我现在需要做的是,当我单击该按钮单击事件上的特定按钮时,我将其重定向到一个新的URL,该URL具有作为查询字符串参数的特定值(A)。而且我不希望刷新我的页面。就像单击按钮一样,它在其他JSP页面上执行操作并显示消息alert("Action
is being performed")
。
我为数据网格编码的Java脚本代码::
<script type="text/javascript">
function getInfoFromServer(){
$.get("http://localhost:8080/2_8_2012/jsp/GetJson.jsp?random=" + new Date().getTime(),function (result) {
success:postToPage(result),alert('Load was performed.');
},"json");
}
function postToPage(data){
alert(data);
var storedata = {
identifier:"ActID",items: data
};
alert(storedata);
var store1 = new dojo.data.ItemFileWriteStore({data: storedata}) ;
var gridStructure =[[
{ field: "ActID",name: "Activity ID",classes:"firstName"
},{
field: "Assigned To",name: "Assigned To",classes: "firstName"
},{ field: "Activity Type",name: "Activity Type",{
field: "Status",name: "Status",{
field: "Assigned Date",name: "Assigned Date",{
field: "Assigned Time",name: "Assigned Time",{
field: "Email",name: "Send Mail",formatter: sendmail,classes: "firstName"
},{
field: "ActID",name: "Delete",formatter: deleteact,classes: "firstName"
}
]
];
//var grid = dijit.byId("gridDiv");
//grid.setStore(store1);
var grid = new dojox.grid.DataGrid({
store: store1,structure: gridStructure,rowSelector: '30px',selectionMode: "single",autoHeight:true,columnReordering:true
},'gridDiv');
grid.startup();
dojo.connect(grid,"onRowClick",grid,function(){
var items = grid.selection.getSelected();
dojo.forEach(items,function(item){
var v = grid.store.getValue(item,"ActID");
getdetailsfordialog(v);
function showDialog() {
dojo.require('dijit.Tooltip');
dijit.byId("terms").show();
}
showDialog();
},grid);
});
}
function sendmail(item) {
alert(item);
return "<button onclick=http://localhost:8080/2_8_2012/jsp/SendMailReminder.jsp?Send Mail="+item+"'\">Send Mail</button>";
}
function deleteact(item) {
alert(item);
return "<button onclick=http://localhost:8080/2_8_2012/jsp/DeleteActivity.jsp?Activity ID="+item+"'\">Delete</button>";
}
</script>
我正在使用$.get
调用获取网格数据。在上面的代码字段中Email
,ActID
实际上是在每次调用函数sendmail
和时都在创建的按钮。显示网格。同样,这两个函数中的值都将正确显示,即分别存在相应的值。喜欢在我收到并在得到现在我想,在一个特定的(按钮栏)我的网页deleteact``formatter``alert(item)``alert(item)``Delete``ActID``alert(item)``sendmail``"[email protected]"``button
click``Sendmail
http://localhost:8080/2_8_2012/jsp/SendMailReminder.jsp?Send Mail="+item+"'
并button click
在Delete
此页面的列中
http://localhost:8080/2_8_2012/jsp/DeleteActivity.jsp?Activity ID="+item+"'\"
用从数据库中检索的项目的值打开。我还应用了一个rowClick
事件,这也引起了问题,因为当我单击u按钮时,我的Rowclick
事件触发,而不是按钮单击事件。这个怎么做。我想到将点击事件应用于网格上的每个按钮。但是我不知道那里的ID。请帮我这个。谢谢..
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。