首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在`GridView`中获取错误“此行已属于此表”

在`GridView`中获取错误“此行已属于此表”
EN

Stack Overflow用户
提问于 2021-09-15 13:00:35
回答 1查看 23关注 0票数 0

尝试在GridView中显示活动目录中的所有用户时出现此错误

代码语言:javascript
复制
 This row already belongs to this table.

这是我正在使用的代码:

代码语言:javascript
复制
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;
        }

我不确定那是什么意思?

谢谢

EN

回答 1

Stack Overflow用户

发布于 2021-09-15 13:09:52

尝试替换:

代码语言:javascript
复制
        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);
        }

通过以下方式:

代码语言:javascript
复制
        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循环中创建它,每次您将信息添加到表中时,它都是一个新行。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69193662

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档