0
$('#<%= gv.ClientID %> :submit[value=Apply]').click(function (event) {
    event.preventDefault(); //***** THIS LINE*******//
    var row = $(this).parents("tr:first");
    var oitemtemplate= row.children("td:eq(4)");
    var amt= row.children("td:eq(3)");              
    var noChild =  oitemtemplate.find('select[id$=ddlSubscribe]').val();
    childSelectedItems = new Array();
    childSelectedItems = noChild.split('|'); 
    amt.text(childSelectedItems[1]);

});

我的 gridview 包含每一行的按钮,用户将单击此按钮将同一行中下拉列表的更改值提交回服务器,但在提交到服务器之前,我喜欢将“amt”列的文本更改为其他内容。

我不确定为什么“amt”列只有在我输入这一行时才会改变 event.preventDefault(); //这条线** //。如果删除它,它就不起作用。

请帮忙,谢谢。

4

3 回答 3

0

event.preventDefault();用来防止提交按钮的默认行为的一种,您需要自己提交表单。

$('#<%= gv.ClientID %> :submit[value=Apply]').click(function (event) {
    event.preventDefault(); //***** THIS LINE*******//
    var row = $(this).parents("tr:first");
    var oitemtemplate= row.children("td:eq(4)");
    var amt= row.children("td:eq(3)");              
    var noChild =  oitemtemplate.find('select[id$=ddlSubscribe]').val();
    childSelectedItems = new Array();
    childSelectedItems = noChild.split('|'); 
    amt.text(childSelectedItems[1]);
   $(this).closest('form').submit(); // submit the form.
});
于 2012-09-28T06:22:58.070 回答
0

提交按钮的默认操作是提交表单。

因此,当您单击按钮时,更改实际上已完成,并且在提交该表单后不久,因为有一个 PostBack.. 一旦发生回发,HTML 将呈现回默认 HTML ..

因此更改不会反映在屏幕上。

但是,当您包含 e.preventDefault() 时,会阻止默认操作,因此不会发生回发..

这就是这次反映变化的原因。

于 2012-09-28T06:36:03.150 回答
0

将此行添加到Page_Load事件中,它会导致 ASP.NET 定义__doPostBackjavascript 函数

ClientScript.GetPostBackEventReference(this, string.Empty);

然后将此行添加到点击事件中

__doPostBack($(this).attr('name'), '');
于 2012-09-28T06:48:20.470 回答