1

我有一个格式为 XML 的表单

<DDCRData>
<role>
<name>CDH</name>
<adGroup>roles</adGroup>
<active>True</active>
<connectionNames>CDH0P</connectionNames>
<roleUsers>
  <user>
    <dbUserID>asuINBJvT4iGrrUgTcEKRPLzMzN6x6WBPtIjP+VYc6Y=</dbUserID>
    <dbUserPassword>x6JsTdhRcaNI+aFMeXfYkA==</dbUserPassword>
    <assignedTo />
    <checkOutTime />
  </user>
  <user>
    <dbUserID>AYufWjterIqgR4MA5wyO/L8AIVLcDQk1+HDvcqVCnrQ=</dbUserID>
    <dbUserPassword>GElP21V6jg7admUQW+hlZA==</dbUserPassword>
    <assignedTo />
    <checkOutTime />
  </user>

并希望将角色名称及其下方的所有角色用户属性输出到网格视图。每个角色有 5 个角色用户配置文件,每个角色都保存在节点中。我可以使用标准数据集绑定顶级信息:

        DataSet ds = new DataSet();
        ds.ReadXml(MapPath("~/utility/LogFile.xml"));
        GridView1.DataSource = ds;
        GridView1.DataBind();

但似乎无法找到一种方法来按照我想要的方式格式化表格(包括用户信息)。

即对于 xml 配置文件中的每个角色。角色名称 -assignedTo -CheckOutTime

感谢您提供所有信息!

4

1 回答 1

0

只是想我会用解决方案更新我的帖子。我为 xml 文件创建了一个 xsd 架构,并编写了两个方法来填充一个 DataTable,然后我将其用作 GridView 的数据源。

这是一些相关的代码:

userList = GetUsersFromRole(DDCRGroupName);
PopulateDataTable();


 public List<User> GetUsersFromRole(String DDCRGroupName)
    {
        List<User> usersBelongToRole = new List<User>();
        foreach (DDCRData.roleRow roleRow in config.role.Where(r => r.name == DDCRGroupName))
        {
            foreach (DDCRData.roleUsersRow roleuserrow in roleRow.GetroleUsersRows())
            {
                foreach (DDCRData.userRow userrow in roleuserrow.GetuserRows())
                {
                    User tempUser = new User();
                    tempUser.dbUserID = userrow.dbUserID;
                    tempUser.dbPassword = userrow.dbUserPassword;
                    tempUser.assignedTo = userrow.assignedTo;

                    usersBelongToRole.Add(tempUser);
                }
                return usersBelongToRole;
            }
        }
        return null;
    }

      private void PopulateDataTable()
    {
        //populate datatable with all user information
        foreach (User user in userList)
        {
            DataRow row = userDataTable.NewuserRow();
            row["dbUserID"] = new AESEncryption().Decrypt(user.dbUserID).ToUpper();
            row["dbUserPassword"] = new    AESEncryption().Decrypt(user.dbPassword).ToUpper();
            row["assignedTo"] = user.assignedTo;
            row["checkOutTime"] = user.checkOutTime;
            userDataTable.Rows.Add(row);
        }
    }

然后在 aspx.cs 页面中只是一个简单的:

if ((roles != null) && (roles.Count() != 0))
        {
            DDCRData.roleDataTable table = roles.GetTable();

            GridView1.DataSource = table;
            GridView1.DataBind();
        }

希望这会有所帮助!

于 2013-02-15T22:31:39.577 回答