PDA

View Full Version : سوال: پر کردن از سه جدول treeviwe



Iran58
دوشنبه 23 تیر 1393, 16:59 عصر
سلام
من چگونه می توانم یک treeviwe ار از جدول پر کنم
جدول اول اسم قاره ها است پله اول
جدول دوم اسم کشورها است پله دوم
جدول دوم اسم پایتخت کشورها است پله سوم
با کمک linq

abbas.oveissi
دوشنبه 23 تیر 1393, 17:26 عصر
سلام
من چگونه می توانم یک treeviwe ار از جدول پر کنم
جدول اول اسم قاره ها است پله اول
جدول دوم اسم کشورها است پله دوم
جدول دوم اسم پایتخت کشورها است پله سوم
با کمک linq

اصولا درخت رو توی یک جدول ذخیره میکنن،با استفاده از فیلد Parent_id هم ساختار درختی رو توی یک جدول بوجود میارن.
البته پیشنهاد بود،حالا به پروژه ی خودتون ربط داره تصمیم بگیرید چیکار کنید.

khokhan
دوشنبه 23 تیر 1393, 20:39 عصر
سلام
من چگونه می توانم یک treeviwe ار از جدول پر کنم
جدول اول اسم قاره ها است پله اول
جدول دوم اسم کشورها است پله دوم
جدول دوم اسم پایتخت کشورها است پله سوم
با کمک linq
با سلام
فرض رو بر این می گیریم که شما سه عدد جدول دارین به نامهای : Country ، State و city و هرسه جدول به همدیگه ارتباط دارند یعنی جدول کشور به جدول استان و جدول استان به جدول شهر :

121109


حالا شما می آین و سه عدد آرایه از نوع رشته توی فرمتون تعریف می کنین و با سه عدد کوئری جداگانه اطلاعات رو از این سه جدول واکشی می کنین
منتهی کوری مربوط به استانها رو منوط به فیلد کد کشور که در داخل جدول استان کلید خارجی هست می کنین
و کوئری شهر رو منوط به جدول استان با کلید کد استان فراخوانی می کنین
بعد مقادیر بدست آمده رو داخل آرایه ها می ریزین و هر پله از گره ها رو به هرکدوم از آرایه های مربوطه جوش می دین :لبخند: اینطوری :


کشور ها :


con = new SqlConnection(connect); cmd = new SqlCommand("SELECT CountryCode, CountryName FROM Country", con);
con.Open();
reader = cmd.ExecuteReader();


arrCountry = new string[100, 2];
int ctr = 0;
while (reader.Read())
{
arrCountry[ctr, 0] = reader["CountryCode"].ToString();
arrCountry[ctr, 1] = reader["CountryName"].ToString();
ctr++;
}
reader.Close();
con.Close();

استانها :


for (int i = 0; i < ctr; i++) {
TreeNode Country = new TreeNode();
Country.Text = arrCountry[i, 1];


cmd = new SqlCommand("SELECT StateCode, StateName FROM State WHERE CountryCode=@CountryCode", con);
cmd.Parameters.AddWithValue("@CountryCode", arrCountry[i, 0]);
con.Open();
reader = cmd.ExecuteReader();
arrState = new string[100, 2];
int ctr2 = 0;
while (reader.Read())
{
arrState[ctr2, 0] = reader["StateCode"].ToString();
arrState[ctr2, 1] = reader["StateName"].ToString();
ctr2++;
}
reader.Close();
con.Close();

وبالاخره شهرها


for (int j = 0; j < ctr2; j++) {
TreeNode state = new TreeNode();
state.Text = arrState[j, 1];
Country.Nodes.Add(state);
cmd = new SqlCommand("SELECT CityCode, CityName FROM City WHERE StateCode=@StateCode", con);
cmd.Parameters.AddWithValue("@StateCode", arrState[j, 0]);
con.Open();
reader = cmd.ExecuteReader();
arrCity = new string[100, 2];
int ctr3 = 0;
while (reader.Read())
{
arrCity[ctr3, 0] = reader["CityCode"].ToString();
arrCity[ctr3, 1] = reader["CityName"].ToString();
ctr3++;
}
reader.Close();
con.Close();


for (int k = 0; k < ctr3; k++)
{
TreeNode city = new TreeNode();
city.Text = (arrCity[k, 1]);
state.Nodes.Add(city);
}



در نهایت همه موارد یاد شده رو به تری ویو روی فرم اختصاص می دین :


[CODE]treeView1.Nodes.Add(Country);
treeView1.ExpandAll();

................:لبخند:

121110

abbas.oveissi
سه شنبه 24 تیر 1393, 03:34 صبح
سلام
من چگونه می توانم یک treeviwe ار از جدول پر کنم
جدول اول اسم قاره ها است پله اول
جدول دوم اسم کشورها است پله دوم
جدول دوم اسم پایتخت کشورها است پله سوم
با کمک linq

چون گفته بودید Linq سعی کردم به عنوان یک تمرین انجام بدمش چون منم خیلی Linq بلد نیستم که نتیجه شد این :
var tree = from country in Countries select new {country.CountryName,StateName=
from state in States
where state.CountryCode==country.CountryCode
select new {state.StateName , Cities=
from city in Cities
where city.StateCode==state.StateCode
select city.CityName}};
من از همون جداول که دوست عزیزم khokhan گفته بود استفاده کردم.البته چون از برنامه LinqPad استفاده میکنم خودش دیگه مثلا City رو کرده Cities .
این هم نتیجه Query که من نوشتم :
121115
با 3تا foreach تو در توی میتونی بریزیش توی TreeView تا هر کار میخوای باهاش بکنید.