2012-02-02 23 views
0

アンカーボタンを使用してサーバー側のメソッドを呼び出したいとします。コードビハインドでアンカーボタンを作成したいので、私はlinkbuttonを使用できません。ここでアンカーボタンを使用してサーバー側のメソッドを呼び出す

は、迅速なコードサンプルです: 私は、フロントエンドでdivを作成し、idが「DV」の背後にある

<div id ="dv" runat="server"> 

コードです:私はしたい。この方法では

dv.InnerHtml = "<a href=\"javascript:void(0);\" id=" + dxm.Id + " onclick=\"__doPostBack('" + dxm.Id + "', '');\" > </a>"; 

ボタンを呼び出してidを渡します。ボタンをクリックすると、ポストバックが実行され、このメソッドにIDが送信されます。

protect void PopupBox(string id) 
{ 
    //using the id get the data. 
    //show modalpopup box 
} 

私はリンクボタンを使用したくありません。私は例としてdivを使用しました。私はそのせいで、バージョン4、余分なセキュリティチェックのポストバックのこのハック「」アクションが動作しないアンカーボタンをasp.netのバージョン4では

node.text = "<a href=\"javascript:void(0);\" id=" + dxm.Id + " onclick=\"__doPostBack('" + dxm.Id + "', '');\" > </a>"; 

答えて

2

を作成するために、ノードのテキストを使用します。この内部で私は、ツリービューを使用しています含まれています。 asp.netコントロールを使用してこれを行う最善の方法は、コントロールの動的な負荷を行うことです。ここで私がチェックして作業しているコードをいくつか紹介します。 asp.netページ

protected void Page_Load(object sender, EventArgs e) 
{ 
    // create the control dynamically 
    LinkButton lbOneMore = new LinkButton(); 

    // the text and the commands 
    lbOneMore.Text = "One more click";   
    lbOneMore.CommandArgument = "cArg"; 
    lbOneMore.CommandName = "CName"; 

    // the click handler 
    lbOneMore.Click += new EventHandler(lbOneMore_Click); 

    // and now add this button link to your div 
    DivControl.Controls.Add(lbOneMore); 
} 

// here you come with the click, and the sender contains the commands 
void lbOneMore_Click(object sender, EventArgs e) 
{ 
    txtDebug.Text += "<br> Command: " + ((LinkButton)sender).CommandArgument; 
} 

<div runat="server" id="DivControl"></div> 
<asp:Literal runat="server" ID="txtDebug" /> 
+0

私は、LinkBut​​tonコントロールを使用したくありません。私は例としてdivを使用しました。私はこの中でツリービューを使用しています。私はアンカーボタンを作成するためにノードテキストを使用します – user929153

+0

@ user929153あなた、または私を理解できません。どのような方法でも、最初にそれを宣言してポストバックをすることはできません(少なくともasp.net 4で)あなたはこの解決策のようにしませんか?あなたが求めるものを作ります。それはあなたがコードの背後にあることを求めるものです。 ! – Aristos

関連する問題