2013-07-29 63 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

相關問題