PDA

View Full Version : تابع بازگشتی..... و ....... TreeView



shahali
یک شنبه 30 دی 1386, 17:55 عصر
سلام به همگی
طریقه پر کردن یه tree view از دیتا بیس با تابع بارگشتی چطوریه؟
(یکی از دوستان می گفت از این روش هم میشه!)
میشه راهنمایی کنین...

Mahdi.Kiani
یک شنبه 30 دی 1386, 23:08 عصر
سلام به همگی
طریقه پر کردن یه tree view از دیتا بیس با تابع بارگشتی چطوریه؟
(یکی از دوستان می گفت از این روش هم میشه!)
میشه راهنمایی کنین...

این بستگی به ساختار جدولی داره که قراره داده ها از اونجا بیان
احتمالا می خواین dynamic Menu بسازید..
در مورد جدولتون و ساختارش و کلا اینکه این داده ها یه چه صورتی هستند یه توضیح بدین تا ...

mahdi_farhani
یک شنبه 30 دی 1386, 23:30 عصر
این کد نمونه برای تولید یک 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();

Happy_davood
سه شنبه 02 بهمن 1386, 08:13 صبح
this.treeViewStockClasses.BeginUpdate();
for (int i = 0; i < this.DataTableNodes.Rows.Count; i++)
{
if (this.DataTableNodes.Rows[i]["ParentStockClassCode"].ToString() == "0")
{
this.treeViewStockClasses.Nodes.Add(this.DataTable Nodes.Rows[i]["StockClassCode"].ToString(), this.DataTableNodes.Rows[i]["StockClassTitle"].ToString());
this.AddNode(this.treeViewStockClasses.Nodes[this.treeViewStockClasses.Nodes.Count - 1]);
}
}
this.treeViewStockClasses.EndUpdate();



private void AddNode(System.Windows.Forms.TreeNode CurrentNode)
{
try
{
for (int i = 0; i < this.DataTableNodes.Rows.Count; i++)
{
if (this.DataTableNodes.Rows[i]["ParentStockClassCode"].ToString() == CurrentNode.Name.ToString())
{
CurrentNode.Nodes.Add(this.DataTableNodes.Rows[i]["StockClassCode"].ToString(), this.DataTableNodes.Rows[i]["StockClassTitle"].ToString());
this.AddNode(CurrentNode.Nodes[CurrentNode.Nodes.Count - 1]);
}
}
}
catch (System.Exception exp)
{
}
}


اگه هنوز علاقه دارید ساختار DB رو با جزئیات بیشتر براتون بفرستم . من خودم این کد رو نوشتم . خیلی هم استفاده کردم و همیشه جواب داده .

hassan razavi
سه شنبه 02 بهمن 1386, 14:52 عصر
در تالار ASP مقاله ای در رابطه با موضوع شما وجود داره. فکر کنم عنوانش اتصال treeview به database بود. فکر کنم از توابع برگشتی استفاده کرده بود.