1

私は SO は初めてで、ASP.NET はかなり初めてです。

クロスページ ポストバックを実行する前にコードを実行したい OnClientClick イベントを持つ LinkBut​​ton があります。

次のページから値を取得できますが、[表示] をクリックすると、HiddenField の値が [編集] に設定されます。いくつかのテストを行ったところ、クリックされたボタンに関係なく、すべての JavaScript 関数が呼び出されているようです。「編集」は最後の値セットなので、常に 2 ページ目から「編集」という値を取得しています。

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>  

注: これらの関数をコード ビハインド関数として呼び出すことをお勧めしますが、クリック イベントの後、ポストバックの前にコード ビハインドを実行する方法が見つかりませんでした。

あらゆる提案をありがとう!

4

1 に答える 1