2013-07-29 37 views
1

我是新来的,对ASP.NET很新。在跨页面回发之前调用javascript OnClientClick处理程序

我有一个LinkBut​​ton和一个OnClientClick事件,我想在做一个跨页面回发之前执行一些代码。

这似乎工作 - 我能够从下一页检索值 - 但是,当我点击“查看”HiddenField值设置为“编辑”。我做了一些测试,似乎所有的javascript函数都被调用,无论点击哪个按钮。 “编辑”是最后设置的值,因此我总是从第二页中检索“编辑”值。

的Javascript:

function viewfunc(control) { 
    <% hidden.Value = "View"; %> 
    <% hiddenpanel.Update(); %> 
    return true; 
} 

function editfunc(control) { 
    <% hidden.Value = "Edit"; %> 
    <% hiddenpanel.Update(); %> 
    return true; 
} 

形式:

<form id="form1" runat="server"> 
<asp:UpdatePanel runat="server" ID="up1" UpdateMode="Conditional"> 
     <ContentTemplate> 
    <asp:Panel ID="Panel1" runat="server"> 
     <asp:GridView Id="gridview1" runat="server" AllowPaging="True"> 
     <Columns> 

      // Data fields here... 

     <asp:TemplateField> 
       <ItemTemplate> 
         <asp:LinkButton ID="viewlabel" runat="server" Text="View" OnClientClick="if(!viewfunc(this)) return false;" PostBackURL="~/NextPage.aspx"></asp:LinkButton> 
       </ItemTemplate> 
       </asp:TemplateField> 

       <asp:TemplateField> 
       <ItemTemplate> 
         <asp:LinkButton ID="editlabel" runat="server" Text="Edit" OnClientClick="if(!editfunc(this)) return false;" PostBackURL="~/NextPage.aspx"></asp:LinkButton> 
       </ItemTemplate> 
       </asp:TemplateField> 
     </Columns> 
     </asp:GridView> 
    </asp:Panel>  
    </ContentTemplate> 
</asp:UpdatePanel> 

<asp:UpdatePanel runat="server" ID="hiddenpanel" UpdateMode="Conditional"> 
     <ContentTemplate> 
     <asp:Panel runat="server"> 
      <asp:HiddenField runat="server" Id='hidden' Value='Empty' /> 
     </asp:Panel> 
     </ContentTemplate> 
</asp:UpdatePanel> 
</form> 

注:我宁愿来调用这些功能代码隐藏的功能,但我无法找到一个方法后执行代码隐藏单击事件但在回发之前。

感谢您的任何和所有的建议!

+0

您应该了解ASP.NET页面的生命周期,如何编写javascript,什么是ViewState,以便成功完成这个完整的理解。 – Prash

回答

0

尝试,而不是执行以下操作:

function viewfunc(control) { 
    document.getElementById('<% hidden.ClientID %>').value = "View"; 
    return true; 
} 

而且

function editfunc(control) { 
    document.getElementById('<% hidden.ClientID %>').value = "Edit"; 
    return true; 
} 

那些需要更新您的隐藏字段,然后触发UpdatePanel的更新事件。

当你有类似<% hidden.Value = "View"; %>的东西时,它会简单的运行,Asp.net不会在乎它是在一个javascript函数中。我认为你不需要在功能完成后告诉UpdatePanel'更新',我想如果你没有这样做,它应该可以正常工作。

+0

谢谢!我只是将'<%hidden.ClientID%>'改成了'<%= hidden.ClientID%>',它正在工作〜 感谢您的好解释。 – lem

相关问题