0

私はこのような機能を持っています:

<script type="text/javascript" >
    function postBack(e) {
        var lnk=document.getElementById('<%=e.getAttribute("ClientID") %>');
        lnk.click();
    };
</script>

次のようなリンクボタンがあります。

<asp:LinkButton onfocus="postBack(this);" id="lnk_home" runat="server" 
     AccessKey="h" onclick="lnk_home_Click">Home</asp:LinkButton>

Alt+h を押したときにページをリダイレクトしたいのですが、うまくいきません。Alt+h を押すと、次のエラーが表示されます。

[コンパイラ エラー メッセージ: CS0103: 名前 'e' は現在のコンテキストに存在しません]

この問題を解決する方法について何か提案はありますか? ありがとう

更新** サーバー側のコード:

protected void lnk_home_Click(object sender, EventArgs e)
    {

        home home_view = LoadControl("home.ascx") as home;
        Panel pnl_view = (Panel)ContentPlaceHolder1.FindControl("pnl_view");
        //pnl_view.Controls.Clear();
        pnl_view.Controls.Add(home_view);
    }
4

1 に答える 1

1

別の JavaScript 関数は必要ありません。次を使用するだけthis.click()です。

<asp:LinkButton onfocus="this.click()" id="lnk_home" runat="server"  AccessKey="h" onclick="lnk_home_Click">Home</asp:LinkButton>

または、別の関数を使用したい場合 (複数の LinkBut​​ton で共通のルーチンを実行する場合など)click methodは、渡されたオブジェクト自体で呼び出します。

<asp:LinkButton onfocus="postBack(this);" id="lnk_home" runat="server" AccessKey="h" onclick="lnk_home_Click">Home</asp:LinkButton>

<script type="text/javascript" >
    function postBack(oLink) {
        // some common code
        oLink.click();
    };
</script>

UPDATE実際にマウスでリンクをクリックすると、イベントが2回発生する可能性があるため、1回のクリックに制限する必要があります。

<asp:LinkButton onfocus="this.AllowClick=true;this.click();" OnClientClick="if (this.AllowClick) {this.AllowClick=false} else {return false}"  id="lnk_home" runat="server"  AccessKey="h" onclick="lnk_home_Click">Home</asp:LinkButton>
于 2013-08-02T16:57:14.580 に答える