2011-01-31 8 views
1

まず、私はC#とasp.netのアマチュアだと言いましょう。あなたの残りの人にとって明白な何かを求めているなら、あらかじめ申し訳ありません。 :)BulletedListにtext + LinkBut​​tonを設定するにはどうすればよいですか?

私はこのコードを使って、私のページのBulletedListにサイトの現在の役割といくつかの追加情報を追加します。

これまでのところ、これらはすべてテキスト関連であるため、問題はありません。

今私が押された場合、それはロールを削除します役割文字列の末尾にLinkBut​​tonコントロールを持っている(と、リストを再増殖)したい

(Visual Studioで管理ツールが持つ機能のような)

私の質問(複数可)です。(これで私の経験は限られているものの、GridViewのような)箇条書きまたは私は別のコントロールを使用する必要があることを行う方法はあります

private void BindRolesToList() 
    { 
     string[] roles = Roles.GetAllRoles(); 
     string[] data = new string[Roles.GetAllRoles().Count()]; 

     for (int i = 0; i<roles.Length; i++) 
     { 
      data[i] = "Role name: " + roles[i] + ". Number of members in the role: " + Roles.GetUsersInRole(roles[i]).Count() + "."; 
     } 

     RoleList.DataSource = data; 
     RoleList.DataBind();  
    } 
+0

<asp:Repeater id="Repeater1" runat="server"> <HeaderTemplate> <ul> </HeaderTemplate> <ItemTemplate> <li>Role name: <%# DataBinder.Eval(Container.DataItem, "RoleName") %>. Number of members in the role: <%# DataBinder.Eval(Container.DataItem, "RoleCount") %>. <asp:LinkButton onCommand="LinkButton_Command" CommandArgument="<%# DataBinder.Eval(Container.DataItem, "RoleName") %>" /> </li> </ItemTemplate> <FooterTemplate> </ul> </FooterTemplate> </asp:Repeater> 

ような何か? – Stobor

+0

どういう意味ですか?私はちょうどドレッジし、ページに箇条書きのリストをドロップし、コードの背後にこのメソッドを書きました。それから私はpage_loadでそれを入力します。何か違いがあれば、プロジェクトはMVCではありません。 – Blm33

+0

ああ、大丈夫です。私はドラッグアンドドロップエディタを使ってasp.netページをどうやって行うのか分かりません...(ファイルを保存するときには、HTMLのようなものを書く必要があります。 :http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.bulletedlist.aspx#exampleToggle) – Stobor

答えて

0

BulletedListはテンプレート作成をサポートしていません。

ロール文字列全体をHyperLinkまたはLinkButtonにする場合は、単にDisplayMode of the BulletedListを設定します。

テキスト文字列の最後にLinkBut​​tonを表示する場合は、より柔軟なリスト構造を使用する必要があります。 Repeaterはおそらくあなたが説明している効果を得るのに最も簡単です。


のようなその表情で行くのaspxファイルを何コードビハインド

private void BindRolesToList() 
{ 
    string[] roles = Roles.GetAllRoles(); 

    //make a table for the data, with two columns, RoleName and RoleCount 
    DataTable data = new DataTable(); 

    DataColumn column; 

    column = New DataColumn(); 
    column.DataType = System.Type.GetType("System.String"); 
    column.ColumnName = "RoleName"; 
    table.Columns.Add(column); 

    column = New DataColumn(); 
    column.DataType = System.Type.GetType("System.Int32"); 
    column.ColumnName = "RoleCount"; 
    table.Columns.Add(column); 

    // Populate the data 
    DataRow row; 
    for (int i = 0; i<roles.Length; i++) 
    { 
     row = data.NewRow(); 
     row["RoleName"] = roles[i]; 
     row["RoleCount"] = Roles.GetUsersInRole(roles[i]).Count(); 
     data.Rows.Add(row); 
    } 

    RoleList.DataSource = data; 
    RoleList.DataBind();  
} 

private void LinkButton_Command(Object sender, CommandEventArgs e) 
{ 
    string RoleName = e.CommandArgument; 

    //whatever code deletes the role, e.g. 
    // Roles.DeleteRole(RoleName); 

    BindRolesToList(); 

} 
+0

時間をかけてくれてありがとう!私は今回もRepeaterクラスを研究していましたが、正直なところ、バインディング全体を把握していません...オブジェクトをリピーターにバインドした例を見て、パラメータを持つクラスを作成しようと考えました文字列(最初の部分)とLinkBut​​tonを作成し、それらの配列をリピーターにバインドします。あなたが投稿したコードは、完全に必要な情報でいっぱいです。再度、感謝します。 – Blm33

2

私はあなたがする必要があると思いますレコードを削除できるユーザーを使用して、各行の最後にリンクボタンを追加します。

このため、datagridviewにlinkbuttonを追加し、そのlinkbuttonのclickイベントでその特定の行を削除することができます。

DataGridviewではなくRepeaterでも同じことができます。

短い答え:いいえ、BulletedList内の別のコントロールを追加することはできませんが、その中にいくつかのより多くのを見た後

関連する問題