尝试在GridView中显示活动目录中的所有用户时出现此错误
This row already belongs to this table.这是我正在使用的代码:
DirectoryEntry objDirEntry = new DirectoryEntry(strADPath, strUsername, strPassword);
PrincipalContext ctx = new PrincipalContext(ContextType.Domain, strADPath, strUsername, strPassword);
UserPrincipal usr = new UserPrincipal(ctx);
PrincipalSearcher ps = new PrincipalSearcher(usr);
PrincipalSearchResult<Principal> results = ps.FindAll();
DataTable dt = new DataTable();
DataColumn col = new DataColumn(); ;
col = new DataColumn("First Name");
dt.Columns.Add(col);
col = new DataColumn("Last Name");
dt.Columns.Add(col);
col = new DataColumn("Last Logon");
dt.Columns.Add(col);
col = new DataColumn("Last Password Reset");
dt.Columns.Add(col);
DataRow dr = dt.NewRow();
foreach (UserPrincipal u in results)
{
dr["First Name"] = u.DisplayName;
dr["Last Name"] = u.SamAccountName;
dr["Last Logon"] = u.LastLogon.ToString();
dr["Last Password Reset"] = u.LastPasswordSet.ToString();
dt.Rows.Add(dr);
}
grdViewAllADSUsers.DataSource = dt;
grdViewAllADSUsers.DataBind();
}
catch (Exception ex)
{
error.Text = ex.Message;
}我不确定那是什么意思?
谢谢
发布于 2021-09-15 13:09:52
尝试替换:
DataRow dr = dt.NewRow();
foreach (UserPrincipal u in results)
{
dr["First Name"] = u.DisplayName;
dr["Last Name"] = u.SamAccountName;
dr["Last Logon"] = u.LastLogon.ToString();
dr["Last Password Reset"] = u.LastPasswordSet.ToString();
dt.Rows.Add(dr);
}通过以下方式:
foreach (UserPrincipal u in results)
{
DataRow dr = dt.NewRow();
dr["First Name"] = u.DisplayName;
dr["Last Name"] = u.SamAccountName;
dr["Last Logon"] = u.LastLogon.ToString();
dr["Last Password Reset"] = u.LastPasswordSet.ToString();
dt.Rows.Add(dr);
}您正在创建一个DataRow,然后反复尝试将其添加到表中。通过在for each循环中创建它,每次您将信息添加到表中时,它都是一个新行。
https://stackoverflow.com/questions/69193662
复制相似问题