背景には、xmldatasource にリンクされた asp:Menu であるカスタム コントロールがあります。xmldatasource は、ユーザーの権限に応じて動的に作成されます。カスタム コントロールのロード イベントは次のとおりです。
protected void Page_Load(object sender, EventArgs e)
{
string userId = (string)Session["userId"];
if (userId != null)
{
DataSet ds = dal.RetrieveApplications(userId);
ds.DataSetName = "Menus";
ds.Tables[0].TableName = "Menu";
DataRelation relation = new DataRelation
("ParentChild",
ds.Tables["Menu"].Columns["Folder_Id"],
ds.Tables["Menu"].Columns["Parent_Folder_ID"], true);
relation.Nested = true;
ds.Relations.Add(relation);
xmlDataSource1.Data = ds.GetXml();
}
}
これは、それを使用する最初のユーザーにとって完全に機能します。しかし、実際には後続のすべてのユーザーが最初のユーザーのメニューを取得しているようです。私はそれを一通り見て、データセットが正常に作成されていることを確認しました。ロードの最後に XMLDatasource.data を調べると、xml は正しいです。
私は本当に立ち往生しています。