내 사용자 목록에있는 각 사용자가 그렇지 않은 것을 알 때 온라인으로 표시되는 문제가 있습니다.회원이 아닌 사용자가 온라인 상에 나타나면?
페이지가로드되면 오프라인으로 표시되지만 페이지를 새로 고침하면 모두 온라인으로 표시됩니다. Gridview에 표시 할 데이터를 얻으려면 프로그래밍 방식으로 자신의 프로필 정보 (CommonProfile)에 액세스하고 있기 때문에 이것이라고 가정합니다.
IsOnline 속성을 true로 설정하지 않고 프로필 정보를 가져올 수있는 방법이 있습니까?
업데이트 : 죄송합니다. 코드는 여기에 있습니다. 제발 부드럽게, 나는 상대적으로 C# & asp.net에 새롭고 나는 여전히 배우고있다.
코드는 회원 사용자와 공통 프로필에서 정보를 수집하고 그 결과를 gridview에 표시 할 수 있도록 데이터 테이블에 필드를 추가합니다. 당신은 단순히 인 getUser의 다른 오버로드를 보았다 경우
MembershipUserCollection usersList = Membership.GetAllUsers();
MembershipUserCollection filteredUsers = new MembershipUserCollection();
foreach (MembershipUser user in usersList)
{
if (!Roles.IsUserInRole(user.UserName, "Admin") && !Roles.IsUserInRole(user.UserName, "Engineering"))
{
if (txtFilterCustomerNo.Text.Length > 0)
{
ProfileCommon PC = Profile.GetProfile(user.UserName);
if (PC.CompanyAccountNo == txtFilterCustomerNo.Text.ToUpper())
{
filteredUsers.Add(user);
}
}
else
{
filteredUsers.Add(user);
}
}
}
txtFilterCustomerNo.Text = null;
foreach (MembershipUser user in filteredUsers)
{
userProfile = Profile.GetProfile(user.UserName);
string[] userRoles = Roles.GetRolesForUser(user.UserName);
DataRow orderLine = dataSet.Tables["UserAccounts"].NewRow();
orderLine["USER_NAME"] = user.UserName;
orderLine["CREATED"] = user.CreationDate;
orderLine["LAST_LOGIN"] = user.LastLoginDate;
orderLine["PASSWORD_CHANGED"] = user.LastLoginDate;
orderLine["ACTIVE"] = user.IsApproved;
orderLine["ONLINE"] = user.IsOnline;
orderLine["LOCKED"] = user.IsLockedOut;
orderLine["CUSTOMER_NO"] = userProfile.CompanyAccountNo;
orderLine["HAS_INVENTORY"] = userProfile.HasOwnInventory;
orderLine["ORDER"] = userRoles.Contains("Order");
orderLine["REPAIR"] = userRoles.Contains("Repair");
orderLine["WARRANTY"] = userRoles.Contains("Warranty");
orderLine["COMMISSIONING"] = userRoles.Contains("Commissioning");
orderLine["ACCOUNT"] = userRoles.Contains("Account");
dataSet.Tables["UserAccounts"].Rows.Add(orderLine);
}
if (dataSet.Tables.Contains("UserAccounts"))
{
GridView1.DataSource = dataSet.Tables["UserAccounts"];
}
사용자에게 액세스하는 실제 코드가 도움이 될 수 있습니다. –