Javascript AJAX更新面板没有';不行。请帮我找出哪里错了。。。?

Javascript AJAX更新面板没有';不行。请帮我找出哪里错了。。。?,javascript,asp.net,ajax,gridview,updatepanel,Javascript,Asp.net,Ajax,Gridview,Updatepanel,--------------Gridviews数据绑定事件---------------- protected void grdShowCallingList_DataBound(object sender, EventArgs e) { if (grdShowCallingList.Rows.Count > 0) { foreach (GridViewRow row in grdShowCallingList.Rows) {

--------------Gridviews数据绑定事件----------------

protected void grdShowCallingList_DataBound(object sender, EventArgs e)
{
    if (grdShowCallingList.Rows.Count > 0)
    {
      foreach (GridViewRow row in grdShowCallingList.Rows)
        {
           LinkButton lnkCallHistorySummary = (LinkButton)row.FindControl("lnkCallHistorySummary");
            lnkCallHistorySummary.OnClientClick = "return getCallHistroySummary('" + lblPersonID.Text + "','" + lblDomainID.Text + "');";
        }
    }
}
-------------调用触发器的Javascript事件-------

-------------要触发的按钮-------------

/-----------模式弹出窗口启动-------------
//------------模式弹出面板结束-------------

我无法触发与btnTrgCHS\u服务器相关联的触发事件Click Event…

看起来您的
btnTrgCHS\u服务器
是嵌套在
GridView
中的控件,它不触发的原因是
UpdatePanel
将执行
FindControl()
在页面上查找
btnTrgCHS\u服务器
FindControl()
方法不会查看嵌套控件

最简单的方法是将另一个
UpdatePanel
包装在
GridView
周围,如下所示:

  <asp:UpdatePanel ID="updPanelGridView" ChildrenAsTriggers="true" UpdateMode="Conditional" runat="server">
    <ContentTemplate>
      <asp:GridView ID="gvTest" runat="server" />
    </ContentTemplate>
  </asp:UpdatePanel>

  <%-- other code etc --%>

  <asp:UpdatePanel ID="updatePnlCallHistory" UpdateMode="Always" runat="server">
    <ContentTemplate>
      <asp:Literal ID="ltrCallHistory" runat="server"></asp:Literal>
    </ContentTemplate>
  </asp:UpdatePanel>
2-将按钮更改为包含一个
OnClick
-您尚未定义单击按钮时应调用的服务器端方法。这意味着AJAX在发回时不知道使用哪种方法

i、 e


不要硬编码动态生成的ID。这些将随着您添加容器控件而更改

改为使用属性获取asp.net生成的客户端id

function getCallHistroySummary(PID,DID){
  document.getElementById("<%=hfCHS.ClientID%>").value = PID + "|" + DID;
  document.getElementById("<%=btnTrgCHS_server.ClientID%>").click();
  return false;
}
函数getCallHistroySummary(PID,DID){ document.getElementById(“”).value=PID+“|”+DID; document.getElementById(“”)。单击(); 返回false; }
你的客户似乎是错的。更正它们并检查

如果是这种情况,则需要使用javascript中的_doPostback()手动触发回发

然后在页面_Load()中找到回发的元素。。如果按钮的ID是您要查找的ID,则使用null参数调用事件。。这应该能解决你的问题

btnTrgCHS1Click(null,null)

事件应该是OnClick,而不是onClientClick()

哪里是btnTrgCHS\u服务器button@sharad对不起,这里没有包括这个。我现在已经在代码中添加了它。它被放置在面板外,将用作模式弹出窗口。您是否使用jQuery对话框作为模式弹出窗口?他们有一些臭名昭著的问题。不,它的AJAX ModalPopupExtenderIt不在gridview中,但它在它定义的模式弹出窗口中。Linkbutton
lnkCallHistorySummary
位于gridview中,它与javascript的
GetCallHistorySummary
事件绑定,以单击更新面板
btnTrgCHS\U服务器的触发器,该触发器再次出现在gridview和模式弹出窗口中。您的意思是该按钮位于
ModalPopup
控制在这种情况下,同样的理论仍然适用,
Trigger
部分找不到嵌套在另一个控件中的控件。不,我使用的逻辑是,我必须对gridview行的多个结果使用相同的弹出窗口。更新面板所在的面板已使用Ajax模式弹出扩展程序包装。当有人单击gridview的链接时,将调用一个javascript方法,并将传递两个参数。这两个参数将用于从服务器获取数据,并将结果传递到更新面板。这是通过同时从javascript中单击位于外部的
btnTrgCHS\u服务器来完成的₹莫达尔波普₹. 但是,问题是,扳机根本不是开火。我想我可能已经解决了问题——我在最后更新了我的答案,并提出了额外的建议——你认为这可能是原因吗?@Cyberpks——这解决了你的问题吗?如果是这样的话,最好将问题标记为已回答。如果没有,那么其他人知道你是如何解决这个问题的是很有用的,你可以自己发布答案并将其标记为已回答:)请你解释一下。我是否必须使用与您提供的相同的javascript,或者需要其他东西?我收到一个Javascript错误->*TypeError:document.getElementById(“”)为空。*
CliendID
在aspx页面的控件上可用。此代码必须位于具有控件
hfCHS
btnTrgCHS\u服务器的aspx页面上,我认为
ClientID
必须是一个静态属性,并且应该由服务器本身管理。请不要介意,但是,就我而言,这与此无关。我可以看到javascript函数正在被调用,因为我可以从同一个函数调用一个警报框,我还与firebug进行了交叉检查,控件具有我使用过的相同ID,但我的问题是我无法从javascript中触发
btnTrgCHS\u服务器
Click事件。。。
<Triggers >
<asp:AsyncPostBackTrigger ControlID="btnTrgCHS" EventName="Click" />
</Triggers>
<asp:Button ID="btnTrgCHS1" OnClick="btnTrgCHS1_server" runat="server"  style="display:none;"         onclientclick="btnTrgCHS1Click();"  />
function getCallHistroySummary(PID,DID){
  document.getElementById("<%=hfCHS.ClientID%>").value = PID + "|" + DID;
  document.getElementById("<%=btnTrgCHS_server.ClientID%>").click();
  return false;
}
btnTrgCHS1Click(null,null)