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 つの roleUser プロファイルがあり、それぞれがノード内に保持されます。標準のデータセットを使用してトップレベルの情報をバインドできます。

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

しかし、私が望むようにテーブルをフォーマットする方法を見つけることができないようです(ユーザー情報を含む)。

つまり、xml 構成ファイル内の各ロールに対して。ロール名 -assignedTo -CheckOutTime

ありとあらゆる情報をありがとう!

4

1 に答える 1

0

ソリューションで投稿を更新すると思いました。xml ファイルの xsd スキーマを作成し、2 つのメソッドを作成して 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 に答える