10. august 2006 - 11:10
Der er
24 kommentarer og 1 løsning
Profile og membership informationer ?
Hejsa, Jeg har lavet en liste over brugere i en given role som listes i et gridview. I denne liste skulle jeg gerne kunne liste et for og efter navn som skal hentes fra profile properties i min web.config fil. Spørgsmålet går nu på hvor ledes jeg kobler disse info til mit gridview ? /Websam
Annonceindlæg tema
Forsvar & beredskab
Cybersikkerhed, realtidsdata og robuste it-systemer er blevet fundamentet for moderne forsvar.
10. august 2006 - 11:51
#1
10. august 2006 - 12:04
#2
Lige i øjet, smid et svar ;o)
10. august 2006 - 12:08
#3
Hov der var lige en ting mere. Hvis jeg har to roller hvor der på den liste skal vises "Navn" og i den anden liste skal vises "Firmanavn" hvordan bære jeg mig så lige ad ?
10. august 2006 - 12:10
#4
forstået på den måde at jeg har en og samme gridview der viser brugere i hver deres rolle så skal der vises en ting hvis det er rolle-1 og en anden ting hvis det er rolle-2
10. august 2006 - 12:35
#5
Altså har du både brugere fra rolle1 og rolle2 i samme gridview eller filtrerer du via en drop-down eller andet, så det kun er brugere fra én rolle, der bliver vist af gangen?
10. august 2006 - 12:44
#6
Det er kun brugere fra en rolle der bliver vist af gangen og der skulle jeg så gerne kunne vise Navn for rolle1 og Firmanavn for rolle2.
10. august 2006 - 12:48
#7
Hm........ der bliver du måske nødt til at lave noget i GridViewets load eller databound events
10. august 2006 - 14:21
#8
Ok så har jeg lige leget lidt med det : protected void UserProfileData_RowDataBound(object sender, GridViewRowEventArgs e) { string roleName = Request.QueryString["id"]; if (e.Row.RowType == DataControlRowType.DataRow) { //if (roleName == "Administrator") //{ ProfileCommon userProfile = (ProfileCommon)ProfileCommon.Create(roleName); e.Row.Cells[1].Text = Profile.GetProfile(roleName).Firmname; //} } else if (e.Row.RowType == DataControlRowType.Header) { if (roleName == "Administrator") { e.Row.Cells[1].Text = "Navn"; } else { e.Row.Cells[1].Text = "Firmanavn"; } } } Delen med at vise forskellig overskrift virker fint, men jeg får ikke vist firmanavnet som jeg skal, nogen ideer ? /Websam
10. august 2006 - 14:43
#9
Ok jeg kom lidt længere med det, jeg skal jo selvfølgelig have brugernavnet med ind istedet : string roleName = Request.QueryString["id"]; if (e.Row.RowType == DataControlRowType.DataRow) { if (roleName == "Administrator") { e.Row.Cells[1].Text = Profile.GetProfile("martin").Firmname; } } men hvordan trækker jeg den ud uden at skulle skrive den fysisk ? /Websam
10. august 2006 - 14:51
#10
Hvis du har brugeres brugerID et eller andet sted, kan du gøre sådan her: MembershipUser mu = Membership.GetUser(userID); ProfileInfoCollection profiles = ProfileManager.FindProfilesByUserName(ProfileAuthenticationOption.All, mu.UserName); ProfileCommon pc = (ProfileCommon)ProfileCommon.Create(mu.UserName);
10. august 2006 - 14:56
#11
Jeg har jo brugernavnet liggende i gridviewet og det er som bare det jeg skal kunne sææte ind i denne linie : e.Row.Cells[1].Text = Profile.GetProfile("martin").Firmname; istedet for "martin" det må jeg da kunne tage med fra gridviewet på en eller anden måde ?
10. august 2006 - 15:01
#12
ja, måske e.Row.Cells[nummer på celle med navn].Text...
10. august 2006 - 15:15
#13
Det har jeg prøvet og når jeg køre debug på det er den blot tom : e.Row.Cells[0].Text /Websam
11. august 2006 - 09:59
#14
Har du andre ideer til hvad jeg kan gøre ? /Websam
11. august 2006 - 11:16
#15
Har du navnet i første celle?
11. august 2006 - 11:20
#16
Du kan måske bruge e.Row.DataItem, som indeholder det underliggende objekt. Vær opmærksom på, at hvis du debugger, at den er null for første række, da det jo er overskrifter etc
11. august 2006 - 11:52
#17
For lige at få et overblik så kommer her mine kolonner i mit gridview : <Columns> <asp:TemplateField> <HeaderStyle HorizontalAlign="Left" /> <HeaderTemplate> <asp:Label ID="lbl_UserName" runat="server"><%# GetText("lbl_UserName")%></asp:Label> </HeaderTemplate> <ItemTemplate> <asp:Label ID="lbl_test" runat="server"><%# Container.DataItem.ToString() %></asp:Label> </ItemTemplate> </asp:TemplateField> <asp:TemplateField> <HeaderStyle HorizontalAlign="Left" /> <HeaderTemplate> <asp:Label ID="lbl_FirmName" runat="server"><%# GetText("lbl_UserRoleEdit")%></asp:Label> </HeaderTemplate> <ItemTemplate> </ItemTemplate> </asp:TemplateField> </Columns> /websam
11. august 2006 - 11:55
#18
Hvis det er i lbl_test dit brugernavn står - kan du gøre sådan her: Label lblUser = e.Row.FindControl("lbl_test") as Label; string userName = lblUser.Text; Mvh
11. august 2006 - 12:06
#19
Når jeg forsøger det får jeg : Object reference not set to an instance of an object i denne linie : string userName = lblUser.Text; ?
11. august 2006 - 12:06
#20
Og e.Row.DataItem duer heller ikke.
11. august 2006 - 12:13
#21
På hvilket tidspunkt gør du det? Husk at check at du bruger sammen id - FindControl("samme id som du har i aspx'en") Mvh
11. august 2006 - 12:16
#22
Hvis det er i forbindelse med databinding du vil trække navnet ud - gør du bare som thomas skrev. Selvfølgelig virker det ;o) Mvh
11. august 2006 - 12:35
#23
Ja hvis jeg eller havde smidet det inden for : if (e.Row.RowType == DataControlRowType.DataRow) Så alt forladt, den gamle lærte noget nyt i dag igen *GGG* thomasabcd, dit forslag virker lige efter bogen ;o) /Websam
11. august 2006 - 13:47
#24
Smid et svar ;o)
11. august 2006 - 13:50
#25
kommer her :)
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.