PDA

View Full Version : متصل كردن اطلاعات ديتابيس به كنترل TreeView



shgroup
شنبه 22 فروردین 1388, 22:37 عصر
سلام
من دارم يك برنامه مي نويسم كه نياز به كار با treeview دارم و با اين كنترل زياد كار نكردم
سوالم اينه كه من از پايگاه داده اكسس استفاده مي كنم و دو تا جدول به اسم هاي نام مراكز و نمايندگي ها دارم
فرض كنيد مي خواهيم كل نمايندگي هاي يك شركت رو در كل كشور به صورت tree نمايش بديم بدين صورت كه يك root اصلي به نام ايران (كه چون يكي بيشتر نيست به صورت دستي add كردم) و بعد چند child كه هر كدام نمايش دهنده نام مراكز مثلا تهران ، اصفهان ، شيراز ، سمنان و ... كه باز هر كدام از اين استان ها داراي چند نمايندگي هستن كه باز اين نماينگي ها child اون مراكز استانها ميشن.
سوالم اينه كه من چطور مي تونم با dataset و bindingsource اين child ها رو به treeview متصل كنم كه اگر به اينها اضافه هم شد در treeview نمايش داده بشه ، اميدوارم منظورم رو متوجه شده باشيد اگه نشديد بگيد تا با يك عكس مثال بزنم . مرسي دوستان

unique1984
یک شنبه 23 فروردین 1388, 14:18 عصر
سلام
یک نگاهی به این لینک بندازین.البته با بانک اس کیو ال هستش.
http://barnamenevis.org/forum/showthread.php?t=152211

NewFoxStudent
یک شنبه 23 فروردین 1388, 14:56 عصر
ساختار این جداول باید رابطه ای باشه(چند به یک) به این صورت که هر رکورد جدول نمایندگیها به یک رکورد جدول مراکز متصل باشه . به عنوان مثال موقع تعریف نمایندگی باید حتما نام مرکز وارد بشه
اگر اینطور باشه میتونید اول کل مراکز رو از جدول مربوطه به کنترل Tree وارد کنید
بعد با یه حلقه تکرار تک تک NOde های کنترل رو به عنوان پارامتر به یه کوئری دیگه بفرستید و نمایندگیهای مربوط به هر مرکز رو به Node مربوط به اون مرکز اضافه کنید .
اگه نیاز به کد دارید بفرمایید تا بزارم

shgroup
یک شنبه 23 فروردین 1388, 17:54 عصر
سلام
یک نگاهی به این لینک بندازین.البته با بانک اس کیو ال هستش.
http://barnamenevis.org/forum/showthread.php?t=152211

ممنونم دوست عزيز مفيد بود :چشمک:

shgroup
یک شنبه 23 فروردین 1388, 17:56 عصر
ساختار این جداول باید رابطه ای باشه(چند به یک) به این صورت که هر رکورد جدول نمایندگیها به یک رکورد جدول مراکز متصل باشه . به عنوان مثال موقع تعریف نمایندگی باید حتما نام مرکز وارد بشه
اگر اینطور باشه میتونید اول کل مراکز رو از جدول مربوطه به کنترل Tree وارد کنید
بعد با یه حلقه تکرار تک تک NOde های کنترل رو به عنوان پارامتر به یه کوئری دیگه بفرستید و نمایندگیهای مربوط به هر مرکز رو به Node مربوط به اون مرکز اضافه کنید .
اگه نیاز به کد دارید بفرمایید تا بزارم

از توضيحتون خيلی ممنونم به قول استادم نيكی و پرسش ! :لبخندساده: :خجالت:
اگه لطف كنی و كدش رو بزاري خيلی شرمندم مي كنی ، اگه وقت داری بذار
مرسی

NewFoxStudent
دوشنبه 24 فروردین 1388, 10:07 صبح
CommandSql = "Select OstanID,OstanName From Ostan";
SqlConnection sqlconnection = newSqlConnection(ConnectionString);
SqlCommand sqlcommand = newSqlCommand(CommandSql, sqlconnectio);
SqlDataReader sqlReader = sqlcommand.ExecuteReader();
TreeNode tr = null;
while (sqlReader.Read())
{
tr = newTreeNode(sqlReader["OstanName"].ToString()); ;
tr.Name = sqlReader["OstanID"].ToString();
treeView1.Nodes.Add(tr);
}
sqlReader.Close;
foreach (TreeNode t in treeView1.Nodes)
{
sqlcommand.CommandText = string.Concat("Select MarkazName,MarkazID From Marakez Where OstanID = ", t.Name);
sqlReader = sqlcommand.ExecuteReader();
while (sqlReader.Read())
{
tr = newTreeNode(sqlReader["MarkazName"].ToString());
tr.Name = sqlReader["MarkazID"].ToString();
t.Nodes.Add(tr);
}
sqlReader.Close();
}
sqlconnection.Close();

farnooshhp
پنج شنبه 24 اردیبهشت 1388, 12:05 عصر
ببخشید از این خط ایراد میگیره میگه treenode این خصوصیت رو نداره
t.Nodes.Add(tr);

عارف پردازشگران
دوشنبه 02 آذر 1388, 11:46 صبح
سلام
این کدی که شما در بالا اوردید فقط یه سطح به پدر اضافه می کنه اگه بخواهیم چند سطح بعدی رو هم اضافه کنیم باید چه کار کرد
ممنون