2011-01-31 5 views
1

먼저, C# 및 asp.net에서 아마추어라고 말하며, 나머지 부분은 분명히 묻는다면 사전에 미안하다고 말하고 싶습니다. :)BulletedList에 텍스트 + LinkButton을 채우는 방법?

나는 사이트의 현재 역할 + 일부 추가 정보로 내 페이지에 BulletedList를 채우는 데 사용하는 코드가 있습니다.

지금까지는 모든 텍스트가 관련되어 있으므로 아무런 문제가 없습니다.

지금은 누를 경우이 역할을 삭제 역할 문자열의 끝에서 LinkButton 컨트롤을 (그리고 목록을 다시 채 웁니다)하고 싶은

(비주얼 스튜디오에서 관리 도구가 가지고있는 기능 등)

내 질문 (들)은이 : (이 내 경험이 제한되어 있지만,하는있는 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에서 그것을 inlcude. 차이가 나는 프로젝트는 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 만 설정하면됩니다.

텍스트 문자열의 끝에 LinkButton을 표시하려면보다 유연한 목록 구조를 사용해야합니다. Repeater은 아마 당신이 설명하는 효과를 얻는 데 가장 쉽습니다. 코드 숨김

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 클래스도 연구하고 있었지만 솔직히 말해서 바인딩 요소 전체를 파악하지 못했습니다 ... 객체를 중계기에 바인딩하는 예를 보았고 매개 변수를 가진 클래스를 만들려고했습니다. 문자열 (첫 번째 부분)과 LinkButton을 연결 한 다음 리피터에 배열을 바인딩하십시오! 게시 한 코드에는 분명히 필요한 정보가 가득합니다. 다시 한번 감사드립니다. – Blm33

2

글 머리 기호 목록에서 않도록 할 수있는 방법이 있나요 아니면 내가 다른 컨트롤을 사용합니다 나는 당신이 생각 레코드를 h 제할 수있는 사용자를 사용하여 각 행의 끝에 linkbutton을 추가하십시오.

이 경우 datagridview에 linkbutton을 추가 할 수 있으며 해당 linkbutton의 click 이벤트에서 해당 spcceic 행을 삭제할 수 있습니다.

Dataagridview 대신 Repeater에서 동일한 작업을 수행 할 수 있습니다. 아니오 BulletedList 할 수없는 내부에 다른 컨트롤을 추가 :

짧은 답변 :

관련 문제