执行一个按钮单击事件,按钮被放置在dojox.grid.DataGrid内部。

我有一个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",

classes:"firstName"

},

{

field: "Status",

name: "Status",

classes: "firstName"

},

{

field: "Assigned Date",

name: "Assigned Date",

classes: "firstName"

},

{

field: "Assigned Time",

name: "Assigned Time",

classes: "firstName"

},

{

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调用获取网格数据。在上面的代码字段中EmailActID实际上是在每次调用函数sendmail和时都在创建的按钮。显示网格。同样,这两个函数中的值都将正确显示,即分别存在相应的值。喜欢在我收到并在得到现在我想,在一个特定的(按钮栏)我的网页deleteact``formatter``alert(item)``alert(item)``Delete``ActID``alert(item)``sendmail``"shan@gmail.com"``button

click``Sendmail

http://localhost:8080/2_8_2012/jsp/SendMailReminder.jsp?Send Mail="+item+"'

button clickDelete此页面的列中

http://localhost:8080/2_8_2012/jsp/DeleteActivity.jsp?Activity ID="+item+"'\"

用从数据库中检索的项目的值打开。我还应用了一个rowClick事件,这也引起了问题,因为当我单击u按钮时,我的Rowclick事件触发,而不是按钮单击事件。这个怎么做。我想到将点击事件应用于网格上的每个按钮。但是我不知道那里的ID。请帮我这个。谢谢..

回答:

我认为,您需要调整服务器端代码以处理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内部。 的全部内容, 来源链接: utcz.com/qa/410312.html

回到顶部