Avatar billede jokkejensen Novice
04. maj 2011 - 12:56 Der er 2 kommentarer og
1 løsning

Membership provider, getAlleUsers med deres roller udtræk

Hej.

Jeg har en en sitecore løsning der bygger på .net's membership provider halløj.

Jeg har brug for at trække en liste ud, jeg kan videre behandle, jeg har fundet noget kode på msdn, men der er deres roller desværre ikke med, altså vil jeg gerne have en liste over alle brugere, og en kolonne med hvilke roller de har, formatet er ligegyldigt, gemmer bare html tabellen og modder den med xslt.

Jeg bruger pt: http://msdn.microsoft.com/en-us/library/dy8swhya.aspx

Som kommer med en fin liste over alle brugerne, jeg mangler bare liiiige en kolonne med roller tilknyttet, der kan være flere roller pr bruger, men hvis de bare kunne være sepereret på en eller anden måde ville det være perfekt.

Hvordan kommer jeg videre ?
Avatar billede crilledk Nybegynder
04. maj 2011 - 14:22 #1
Har du prøvet noget i stil med:

RolePrincipal r = (RolePrincipal)User;
rolesArray = r.GetRoles();

På hver af de brugere du finder?


ref: http://msdn.microsoft.com/en-us/library/system.web.security.roleprincipal.getroles(VS.80).aspx
Avatar billede jokkejensen Novice
04. maj 2011 - 14:27 #2
Jo men er ikke så rå til C#, og har problemer med at neste gridviews, har du et bud her til ?

vh
Avatar billede jokkejensen Novice
04. maj 2011 - 15:38 #3
<%@ Control Language="c#" AutoEventWireup="true" TargetSchema="http://schemas.microsoft.com/intellisense/ie5" %>
<%@ Import Namespace="System.Web.Security" %>
<script runat="server">

int pageSize = 8000;
int totalUsers;
int totalPages;
int currentPage = 1;

public void Page_Load()
{
  if (!IsPostBack)
  {
    GetUsers();
  }
}

private void GetUsers()
{
  UsersOnlineLabel.Text = Membership.GetNumberOfUsersOnline().ToString();

  UserGrid.DataSource = Membership.GetAllUsers(currentPage-1, pageSize, out totalUsers);
  totalPages = ((totalUsers - 1) / pageSize) + 1;

  // Ensure that we do not navigate past the last page of users.

  if (currentPage > totalPages)
  {
    currentPage = totalPages;
    GetUsers();
    return;
  }

  UserGrid.DataBind();
  CurrentPageLabel.Text = currentPage.ToString();
  TotalPagesLabel.Text = totalPages.ToString();

  if (currentPage == totalPages)
    NextButton.Visible = false;
  else
    NextButton.Visible = true;

  if (currentPage == 1)
    PreviousButton.Visible = false;
  else
    PreviousButton.Visible = true;

  if (totalUsers <= 0)
    NavigationPanel.Visible = false;
  else
    NavigationPanel.Visible = true;
}

public void NextButton_OnClick(object sender, EventArgs args)
{
  currentPage = Convert.ToInt32(CurrentPageLabel.Text);
  currentPage++;
  GetUsers();
}

public void PreviousButton_OnClick(object sender, EventArgs args)
{
  currentPage = Convert.ToInt32(CurrentPageLabel.Text);
  currentPage--;
  GetUsers();
}

public string roles(string username)
{
String[] rolesArray = Roles.GetRolesForUser(username);

string roles = "";
foreach (string role in rolesArray)
    {
        roles+= role +",";
    }



return roles;
}

</script>


  <h3>User List</h3>

  Number of Users Online: <asp:Label id="UsersOnlineLabel" runat="Server" /><br />

  <asp:Panel id="NavigationPanel" Visible="false" runat="server">
    <table border="0" cellpadding="3" cellspacing="3">
      <tr>
        <td style="width:100">Page <asp:Label id="CurrentPageLabel" runat="server" />
            of <asp:Label id="TotalPagesLabel" runat="server" /></td>
        <td style="width:60"><asp:LinkButton id="PreviousButton" Text="< Prev"
                            OnClick="PreviousButton_OnClick" runat="server" /></td>
        <td style="width:60"><asp:LinkButton id="NextButton" Text="Next >"
                            OnClick="NextButton_OnClick" runat="server" /></td>
      </tr>
    </table>
  </asp:Panel>

  <asp:DataGrid id="UserGrid" runat="server"
                CellPadding="2" CellSpacing="1"
                Gridlines="Both">
    <HeaderStyle BackColor="darkblue" ForeColor="white" /> 
    <Columns>
    <asp:TemplateColumn>
    <ItemTemplate>
    <%# roles(((MembershipUser)Container.DataItem).UserName) %>



    </ItemTemplate>
    </asp:TemplateColumn>
    </Columns> 
  </asp:DataGrid>
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester



IT-JOB