PDA

View Full Version : آموزش: اتصال فولدرهای تو در تو هارد به TreeView



abadanboy
شنبه 21 مهر 1386, 14:46 عصر
با سلام

خوب بعد از اینکه اتصال یه ساختار درختی (TreeView ) به دیتابیس رو واستون گفتم حلا می خوام نحوه اتصال اون رو به خود هارد و ساختن یه چیزی تو مایه های Explorer ویندوز رو رو وب کداشو واستون بزارم در این روش هرچی فولدر که تو فولدری به اسم Upload و فولدر به اسم کاربر وجود داره واستون میاره تو یه ساختار درختی
در اینجا session["user"] =x حاوی نام کاربری یوزر می باشد که همون رو به عنوان شاخه اصلی در نظر می گیریم
البته شما برای استفاده از کد session[user رو برداشته و نام فولدر مورد نظر را وارد کنید


C# CODE



public void Page_Load(object sender, EventArgs e) {

if (!Page.IsPostBack)
{
TreeNode root = new TreeNode();
root.Text = Session["user"].ToString();
root.SelectAction = TreeNodeSelectAction.None;
TV.Nodes.Add(root);
Tree_Show(TV.Nodes[0], MapPath("") + "\\upload\\" + Session["user"].ToString());
}
}


void Tree_Show(TreeNode Father, string Url) {

string[] get = Directory.GetDirectories(Url);

foreach (string s in get)
{
int p = s.LastIndexOf("\\");
TreeNode n = new TreeNode();
n.Text = s.Substring(p + 1);
n.Value = s;
TV.Nodes.Add(n);
Tree_Show(n, s);


}
}

ASP CODE

<asp:TreeView ID="TV" runat="server" Target="View" OnSelectedNodeChanged="select" LineImagesFolder="~/TreeLineImages" ShowLines="True" BorderStyle="None" Font-Bold="True" Font-Names="Times New Roman" Font-Overline="False" AutoGenerateDataBindings="False">
<SelectedNodeStyle Font-Bold="True" />

</asp:TreeView>

Chabok
شنبه 21 مهر 1386, 22:10 عصر
از مقاله خوبتون ممنونم .
فقط یک سوال داشتم که خیلی وقته ذهنم رو در گیر کرده
اگه ما نخواهیم از TreeView استفاده کنیم و بخواهیم همه اطلاعات تو در تو که بر فرض بینهایت هست (منظورم اینه که مشخص نیست تا کی زیر شاخه ها ادامه داره)
رو در یک حلقه بدست بیاوریم و خودمون مدیریت کنیم باید چجوری این حلقه رو بنویسیم و مدیریت کنیم .
بهتر بگم . شاید بخواهیم خودمون یک TreeView بنویسیم .
مثلا SiteMap یک سایت رو در نطر بگیرید که بخشهایی زیادی رو به صورت زیر شاخه های متعدد طبق دیتابیسی که در مقاله قبلی شما بود داریم
(یعنی هر رکورد FatherID هم داره که پدرش مشخص باشه)
حالا بخواهیم یک نقشه سایت خودمون براش بنویسیم و نخواهیم از Tree کمک بگیریم .
میشه بگین چجوری باید چنین کاری رو انجام داد ؟
چه از نظر حلقه و چه از نظر طراحی . ممنون میشم کمک کنید .

abadanboy
یک شنبه 22 مهر 1386, 09:34 صبح
وقتی ما در شرایطی هستیم که نمی دانیم چه تعداد داده داریم یا باید از یک تابع بازگشتی استفاده کنیم مثل همین مقاله و یا باید اون حلقه که می نویسیم چک کنه که چیزی وجود داره در انتها یا نه
خوب repeater یا امثال اون همین کار رو می کنن یعنی یه حلقه می زارن تا جایی که داده تمام شد به اون حلقه پایان می دن
از تابع بازگشتی برای دیتابیس زیاد نمی شه استفاده کرد چون اغلب باعث stack over می شه
ولی برای دیتابیس راه من همونی هست که تو مقاله اول گفتم
در مورد شکل هم برای sitemap هم می شه از treeview و هم از menu استفاده کرد یا یه شکل ابتکاری که می تونی با html در بیاری بعد بزاری تو repeater و یا ....
وقتی ما یه ساختار داریم می تونیم اون رو به همه چی ربط بدیم شما مقاله اول رو با یه خورده تغییرات می تونی تبدیل به menu کنی