在"网格视图"中获取错误"This row already belongs to this table"



当尝试在我的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;
}

我不确定那是什么意思?

感谢

尝试替换:

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每个循环中创建它,每次向表中添加信息时,它都是一个新行。

相关内容

最新更新