این کد نمونه برای تولید یک Sitemap هست میتونی ازش ایده بگیری . به صورت نامحدود زیر منو برات درست میکنه .
فقط کافی که در دیتابیست فیلدی برای تعیین کردن پدر داشته باشی
DataRow[] drCollection;
DataView dv;
DataTable dtTemp=new DataTable();
dsMain.sp_T_Menu_SelectAllRow drMenu;
try
{
xtw = new XmlTextWriter(this.fullPath, System.Text.UTF8Encoding.UTF8);
xtw.WriteStartDocument();
xtw.Formatting = Formatting.Indented;
xtw.WriteStartElement("siteMap", "http://schemas.microsoft.com/AspNet/SiteMap-File-1.0");
xtw.WriteStartElement("siteMapNode");
xtw.WriteAttributeString("url", "");
xtw.WriteAttributeString("title", "");
xtw.WriteAttributeString("description", "");
drCollection = dt.Select("[Parent] IS NULL");
searchForAllNode(drCollection);
xtw.Close();
}
catch
{
if (xtw.WriteState!= WriteState.Closed)
{
xtw.Close();
}
}
}
private void searchForAllNode(DataRow[] drParent)
{
DataTable dtTemp = new DataTable();
dsMain.sp_T_Menu_SelectAllRow drMenu;
foreach (DataRow dr in drParent)
{
drMenu = (dsMain.sp_T_Menu_SelectAllRow)dr;
xtw.WriteStartElement("siteMapNode");
xtw.WriteAttributeString("url", drMenu.URL);
xtw.WriteAttributeString("title", drMenu.Title);
xtw.WriteAttributeString("description", "");
searchForAllNode(dt.Select("[Parent] = " + drMenu.ID.ToString()));
xtw.WriteEndElement();
}
}
این نمونه هم من برای نظر سنجی استفاده میکنم . سوالو از یک جدول میخونم و جواب ها رو از یه جول دیگه
daQuestion.Fill(dtQuestion, 1, "");//نمایش کلیه سوالها
TreeNode tnQuestion;
TreeNode tnAnswer;
dsMain.cms_VoteResult_SelectRow[] drResult;
int iAnswerCount = 0;
trvVote.Nodes.Clear();
foreach (dsMain.cms_VoteQuestion_SelectRow dr in dtQuestion.Rows)
{
tnQuestion = new TreeNode(dr.vqu_Memo);
tnQuestion.Value = dr.vqu_Id.ToString();
daAnswer.Fill(dtAnswer, dr.vqu_Id, 1); //نمایش کلیه جواب ها
daResult.Fill(dtResult, dr.vqu_Id);
foreach (dsMain.cms_VoteAnswer_SelectRow drA in dtAnswer.Rows)
{
drResult = (dsMain.cms_VoteResult_SelectRow[])dtResult.Select("van_ID = " + drA.van_Id.ToString());
iAnswerCount = 0;
if (drResult.Length != 0)
iAnswerCount = drResult[0].Count;
tnAnswer = new TreeNode(drA.van_Memo + " - تعداد پاسخها : " + iAnswerCount.ToString());
tnAnswer.Value = drA.van_Id.ToString();
tnAnswer.SelectAction = TreeNodeSelectAction.None;
tnAnswer.ShowCheckBox = false;
tnQuestion.ChildNodes.Add(tnAnswer);
}
trvVote.Nodes.Add(tnQuestion);
}
trvVote.CollapseAll();