我正在写一个javascript
function ValueChanges()
{
Parent = document.getElementById('<%= grvMultiChoiceAnswerList.ClientID %>');
var items = Parent.getElementsByTagName('textarea');
var chkboxControl = Parent.getElementsByTagName('checkbox');
for (i = 0; i < items.length; i++) {
var hdnTextControl, hdnExplanation;
hdnTextControl = (items[i].id).replace("txtText", "hdnText");
hdnExplanation = (items[i].id).replace("txtExplanation", "hdnExplanation");
if (items[i].id.split("_")[5] == "txtText") {
if (items[i].value != document.getElementById(hdnTextControl).value) {
var ssave = window.confirm('Your changes are not saved. Do you want to save your changes before you exit.')
if (ssave == true) {
document.getElementById('<%=btnUpdate.ClientID%>').click(); // I WANT TO REPLACE THIS LIKE SO MY DELEGATE GETS FIRE
return false;
}
else
return true;
}
}
}
我有代表
grvMultiChoiceAnswerList.RowUpdating += delegate(object obj, GridViewUpdateEventArgs args)
{
SaveFields();
if (ReloadContent != null)
ReloadContent(null, EventArgs.Empty);
};
现在我想在我的java脚本中调用此委托,并希望替换document.getElementById('&lt;%= btnUpdate.ClientID%&gt;')。click();如果(ssave == ture)条件为真,那么我的代表会被激怒
答案 0 :(得分:1)
为了从javascript访问服务器上的“方法”,你需要使用你的javascript进行回发:
__doPostBack('MyBtn','');
就服务器而言,这将与
相同document.getElementById('<%=btnUpdate.ClientID%>').click();
,但对于客户端,它将跳过与点击按钮链接的任何javascript。
要访问服务器端,您需要模拟从javascript中触发事件,以便asp.net页面可以识别它并坚持它。添加网格视图的更新列并查看生成的javascript,它将为您提供线索,以了解在dopostback中触发的内容。您可能需要保留列但能够使用css隐藏它。