我有格式
的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>
我正在寻找输出到gridview的角色名称,以及它下面的所有roleuser属性。每个角色有5个roleUser配置文件,每个配置文件都保存在节点中。我可以使用标准数据集绑定顶级信息:
DataSet ds = new DataSet();
ds.ReadXml(MapPath("~/utility/LogFile.xml"));
GridView1.DataSource = ds;
GridView1.DataBind();
但似乎找不到按照我喜欢的方式格式化表格的方法(包括用户信息)。
即。对于xml配置文件中的每个角色。 角色名称 -分配给 -CheckOutTime
感谢任何和所有信息!
答案 0 :(得分: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();
}
希望这会有所帮助!