2016-10-24 12 views
0

リテラル使ってC#へのasp.net LinkBut​​tonコントロールを追加します。クリックしてCommandArgumentの値を取得します。私は以下のコードのような交流#Webフォームアプリケーションにリテラルにいくつかのasp.net LinkBut​​tonコントロールを追加したい

private void BtnAdd_Click(object sender, EventArgs e) 
{ 
    //get the value of CommandArgument 
} 

私はこれらを試して、リンクボタンをリテラルに追加しました。しかし、LinkBut​​tonコントロールは<a>タグに変換しなかったと私はこのような放火犯なし任意のイベントで火災ができなかったことが判明:私は、全体の<ul><li>タグを使用してlinkbuttonsとして葉とツリーを作りたい enter image description here

。 誰かがこの問題の解決方法を説明できると非常に役に立ちます。

+0

サーバー側のコントロールは、Literalコントロールのテキスト、または子、として追加することはできませんリストのために働きます。リテラルコントロールに追加するものは、リテラル文字列として扱われるため、リテラルと呼ばれています。あなたは何をしたいのかを行うための代替方法を見つける必要があります – Andrei

答えて

1

このようにリンクボタンを使用してAndreiが提案するようには機能しません。

リテラル内のタグごとにクエリパラメータを作成し、現在のページまたは別のページにリダイレクトし、そこからクエリパラメータを抽出することで、これまで同様のソリューションを使用してきました。

しかし、文字通りの解決策が非常に混乱してコードが重くなってしまうので、あなたがしようとしていることを達成する別の方法がないか最初に試してみることをお勧めします。

1

Repeaterはあなたの目的に適していると思います。

<ul> 
    <asp:Repeater ID="Repeater1" runat="server"> 
     <ItemTemplate> 
      <li><asp:LinkButton ID="BtnAdd" runat="server" CssClass="add-row" OnClick="BtnAdd_Click">Text on the link</asp:LinkButton></li> 
     </ItemTemplate> 
    </asp:Repeater> 
</ul> 

そして、あなたはあなたが<asp:LinkButton ..>シングルを持っているなら、あなたはそれが実行時にプロパティの設定ができOnClick

<asp:LinkButton ID="BtnAdd" runat="server" CssClass="add-row" OnCommand="BtnAdd_Command" CommandArgument='<%# Eval("value") %>'> 

protected void BtnAdd_Command(object sender, CommandEventArgs e) 
{ 
    string commandArgument = e.CommandArgument.ToString(); 
} 
2

正しいここでのアプローチではないです。 あなたのアプローチは、HTMLコンテンツに対してのみ有効です。 あなたが行う必要があるのは、OnInitのようなページライフサイクルイベントを処理し、コンテナコントロール(this.MyPanel)への参照を取得し、そのコントロールのchildrenプロパティ(this.MyPanel.Children.Add(new ...)にアイテムを動的に追加することです。 。))

提案リピーター溶液は、ツリー構造のデータソースには適していませんが、しかし...