我有一个gridview,其中所有列都是文本框。我已经通过jquery在文本框上实现了一个onclick函数,这样当用户单击文本框时,会单击一个隐藏按钮,然后更新更新面板并重新加载页面。文本框也应该是可编辑的。我的问题是,每次单击要编辑的文本框并重新加载页面时,都会触发 onclick 功能。怎么预防呢?
这是我的文本框代码:
注意:这只是一个文本框的代码。所有文本框都使用相同的Onclick功能
<asp:TextBox ID="txtLoginName" Onclick='<%# "timepass(" + Eval("userid") + ");" %>'
Text='<%# Eval("LoginName")%>' runat="server"></asp:TextBox>
这是触发函数背后的代码的jquery代码
<script type="text/javascript">
function timepass(pass) {
$("#btnHidden").trigger("click");
}
</script>
我想在gridview中使用隐藏列,每次单击文本框时其值都会更改,但由于行中有许多文本框,因此它变得越来越复杂,因此看起来不太可行。任何人都可以提出更好的选择吗?
答案 0 :(得分:0)
为避免页面刷新,您只需使用Ajax调用即可。
function ajaxCall(passedId){
$.post('url', { id: ajaxCall},
function(returnedData){
console.log(returnedData);
//update grid view with complex javascript
});
}
然后您可以简单地使用Saeb绑定代码的修改版本
$("yourselector").click(function(event) {
var eventId = event.target.id;
ajaxCall(eventId);
$("#" + eventId).unbind( "click", handler );;
});
这会绑定到所有文本框,但会取消绑定特定文本框。此外,根据您使用的gridview类型,某些第三方网格like jQuery Grid允许您将JSON对象绑定到它们。
将其绑定到jQuery Grid的示例
$.post('url', { id: "value" },
function (returnedData) {
console.log(returnedData);
var source =
{
datatype: "json",
datafields: [
{ name: 'CompanyName' },
{ name: 'ContactName' },
{ name: 'ContactTitle' },
{ name: 'Address' },
{ name: 'City' },
{ name: 'Country' }
],
localdata: data
};
var dataAdapter = new $.jqx.dataAdapter(returnedData);
$("#jqxgrid").jqxGrid(
{
source: dataAdapter,
columns:
[
{ text: 'Company Name', datafield: 'CompanyName', width: 250 },
{ text: 'Contact Name', datafield: 'ContactName', width: 150 },
{ text: 'Contact Title', datafield: 'ContactTitle', width: 180 },
{ text: 'City', datafield: 'City', width: 120 },
{ text: 'Postal Code', datafield: 'PostalCode', width: 90 },
{ text: 'Country', datafield: 'Country', width: 100 }
]
});
});