PDA

View Full Version : پر کردن Treeview توسط Linq از یک جدول خودارجاع در database



Vidico
پنج شنبه 05 آذر 1394, 22:51 عصر
سلام
من میخوام مقادیر Treeview رو از دیتابیس پر کنم
و اینکه بعد از پر شدن و نمایش Treeview کاربر روی یکی از node ها راست کلیک رو میزنه و گزینه جدید رو کلیک می کنه و یه پنجره باز میشه و مقادیر جدید و میگیره و توی دیتابیس ذخیره می کنه


مقادیر پیش فرض:
تصویر ضمیمه رو نگاه کنید

توی Treeview اینجوری باید باشه

ایران
----تهران
-----------شهرقدس
----تبریز
-----------ارس



چطوری این کار رو بکنم؟ ممنون میشم راهنمائی کنید

sql server
به روش LINQ

Vidico
جمعه 06 آذر 1394, 13:54 عصر
کد زیر که treeview رو بصورت یک node پر می کنه



var db = new medataDataContext(); // linq class
var squery = db.ing_datas; //this is linq query
foreach (var t in squery)
{
TreeNode tNode;
var tt = t.id + " - " + t.name;
tNode = treeView1.Nodes.Add(tt);
}




حالا موندم که چطوری زیر شاخه هاشو تشخیص بدم
زیر شاخه ها در فیلد pid نشون میده که شاخه اصلیش کدومه و ...

چیکار کنم؟

Mahmoud.Afrad
جمعه 06 آذر 1394, 16:54 عصر
باید به صورت بازگشتی بنویسی.
ابتدا یک رابطه یک به چند روی همین جدول ایجاد کن(ارتباط بین کلیداصلی id و کلیدخارجی pid) و بعد به صورت متدی شبیه متد زیر میتونی پرش کنی

private void AddNodes(List<tbl> source, tbl parent, TreeNodeCollection tnCollection)
{
var childs =
from item in source
where item.tbl1 == parent
select item;
foreach (tbl child in childs)
{
TreeNode tn = tnCollection.Add(child.Id.ToString(), child.name);
AddNodes(source, child, tn.Nodes);
}
}

نحوه فراخوانی

DataClasses1DataContext db = new DataClasses1DataContext();
AddNodes(db.tbls.ToList() , null , treeView1.Nodes);





اگر رابطه ایجاد نکردی، در شرط، جلوی where کلیدها رو با هم مقایسه کن.

private void AddNodes(List<tbl> source, int? parentId, TreeNodeCollection tnCollection)
{
var childs =
from item in source
where item.pid == parentId
select item;
foreach (tbl child in childs)
{
TreeNode tn = tnCollection.Add(child.Id.ToString(), child.name);
AddNodes(source, child.Id, tn.Nodes);
}
}

فراخوانی این متد با قبلی فرقی نداره.

Vidico
جمعه 06 آذر 1394, 19:39 عصر
فدات داداشی
اینو پیدا کردم
دقیقا چیزی هست که میخوام
http://stackoverflow.com/questions/29200935/how-to-get-the-id-number-from-a-selected-treeview-node

ولی این با ADO.net هست ولی من linq کار می کنم
. موندم چطوری با linq انجام بدم

Vidico
شنبه 07 آذر 1394, 13:34 عصر
سلام
اگر شما DataTable داری که هیچ ، در غیر اینصورت این متد یه دیتاتیبل برمیگردونه
* کانکشن استرینگ رو اصلاح کن


private DataTable GetDataTable()
{
SqlConnection con = new SqlConnection("Data Source=127.0.0.1;Initial Catalog=YourTable;Persist Security Info=True;User ID=sa;Password=11111");
SqlCommand cmd = new SqlCommand();
SqlDataReader dr;
DataTable dt = new DataTable();
cmd.Connection = con;
cmd.CommandText = "SELECT * FROM tblgroup ORDER BY pid, id";
con.Open();
dr = cmd.ExecuteReader();
dt.Load(dr);
con.Close();
return dt;
}



این متد هم بر اساس دیتا تیبل ، TreeView رو پر میکنه
* اسم TreeView و DataTable رو بعنوان پارامتر باید بهش پاس بدی
** مطلبی که واضحه NewNode.Name = row["ID"].ToString(); نباید تو متد تغییر کنه ، چون گره های Parentاز این طریق پیدا میشن.

private void FetchData(TreeView Tree, DataTable dt)
{
Tree.Nodes.Clear();
foreach (DataRow row in dt.Rows)
{
if (row["PID"].ToString() == string.Empty)
{
TreeNode NewNode = new TreeNode();
NewNode.Name = row["ID"].ToString();
NewNode.Text = row["Title"].ToString();
NewNode.Tag = row["ID"].ToString();

Tree.Nodes.Add(NewNode);
}
else
{
TreeNode[] tn ;
tn = Tree.Nodes.Find(row["PID"].ToString(), true);

TreeNode NewNode = new TreeNode();
NewNode.Name = row["ID"].ToString();
NewNode.Text = row["Title"].ToString();
NewNode.Tag = row["ID"].ToString();

if (!(tn[0] == null))
{
tn[0].Nodes.Add(NewNode);
}
}
}

}



نحوه فراخوانی هم به این شکل میشه


FetchData(treeView1, GetDataTable());


* فقط اسم دیتابیس ، جدول و همچنین فیلد ها رو مجددا کنترل کنید.




موفق باشید


باید به صورت بازگشتی بنویسی.
ابتدا یک رابطه یک به چند روی همین جدول ایجاد کن(ارتباط بین کلیداصلی id و کلیدخارجی pid) و بعد به صورت متدی شبیه متد زیر میتونی پرش کنی

private void AddNodes(List<tbl> source, tbl parent, TreeNodeCollection tnCollection)
{
var childs =
from item in source
where item.tbl1 == parent
select item;
foreach (tbl child in childs)
{
TreeNode tn = tnCollection.Add(child.Id.ToString(), child.name);
AddNodes(source, child, tn.Nodes);
}
}

نحوه فراخوانی

DataClasses1DataContext db = new DataClasses1DataContext();
AddNodes(db.tbls.ToList() , null , treeView1.Nodes);





اگر رابطه ایجاد نکردی، در شرط، جلوی where کلیدها رو با هم مقایسه کن.

private void AddNodes(List<tbl> source, int? parentId, TreeNodeCollection tnCollection)
{
var childs =
from item in source
where item.pid == parentId
select item;
foreach (tbl child in childs)
{
TreeNode tn = tnCollection.Add(child.Id.ToString(), child.name);
AddNodes(source, child.Id, tn.Nodes);
}
}

فراخوانی این متد با قبلی فرقی نداره.


دوستان چطوری با linq انجام بدم؟
نمایش و پر کردن Tree view از دیتابیس طبق تصاویر ضمیمه شده پست 1
و همچنین قابلیت اضافه کردن رکورد جدید

Mahmoud.Afrad
شنبه 07 آذر 1394, 20:41 عصر
شما کدی که من گذاشتم رو دیدی؟! اون هم با linq نوشته شده. اگر دیدی و مشکلی داری بپرس. اگر نمیتونی ازش استفاده کنی باز هم بپرس. نه اینکه نادیده بگیری و سوال اولتو تکرار کنید.

Vidico
شنبه 07 آذر 1394, 21:04 عصر
شما کدی که من گذاشتم رو دیدی؟! اون هم با linq نوشته شده. اگر دیدی و مشکلی داری بپرس. اگر نمیتونی ازش استفاده کنی باز هم بپرس. نه اینکه نادیده بگیری و سوال اولتو تکرار کنید.

فدات داداش، میدونم
بخدااا خیلی خیلی خیلی گلی

من تستش کردم نتونستم ازش استفاده کنم، یعنی تو آرایه هاش مشکل داشتم
باز میرم دوباره چک کنم، ببینم چی میشه

نتیجه رو اعلام می کنم :چشمک:

Vidico
شنبه 07 آذر 1394, 22:07 عصر
داداشی نتونستم، در کل تایع گیجم می کنه
یه جوری نمیشه تابع رو حذف کرد؟

این کوئری چی می میگه؟
var childs =from item in source where item.tbl == parentId select item;

Vidico
دوشنبه 09 آذر 1394, 15:25 عصر
با توجه به راهنمائی دوستان بازم گیج میزنم، بیشتر راهنمائی می کنید؟

Mahmoud.Afrad
دوشنبه 09 آذر 1394, 19:32 عصر
در چنین مواردی باید اول نودهای ریشه یعنی نودهایی که pid اونها null هست اضافه بشن(برای همین موقع فراخوانی تابع به پارامتر parentid (نا)مقدار null رو ارسال میکنیم). بعد برای هر کدوم، باید فرزندانش بدست بیاد و اضافه بشن. این کار باید توسط یک تابع بازگشتی انجام بشه چون معلوم نیست چند سطح وجود داره. پس یک تابع مثل اونی که من گذاشتم نیاز داری.



حالا موارد زیر رو مشخص کن تا بفهمی مشکلت چیه و اصلاح کنی
نام جدول چیه؟ وقتی نام جدول مشخص شد نام کلاس متناظرش هم مشخص میشه که میتونی در List<tbl> source به جای tbl نام کلاس متناظر جدول رو بزاری.
آیا رابطه روی جدول از خودش به خودش ایجاد کردی(رابطه بین pid و id) یا نه؟ اگر نه از کدی استفاده کن که پستهای قبلی گفتم.

Vidico
سه شنبه 10 آذر 1394, 12:55 عصر
در چنین مواردی باید اول نودهای ریشه یعنی نودهایی که pid اونها null هست اضافه بشن(برای همین موقع فراخوانی تابع به پارامتر parentid (نا)مقدار null رو ارسال میکنیم). بعد برای هر کدوم، باید فرزندانش بدست بیاد و اضافه بشن. این کار باید توسط یک تابع بازگشتی انجام بشه چون معلوم نیست چند سطح وجود داره. پس یک تابع مثل اونی که من گذاشتم نیاز داری.



حالا موارد زیر رو مشخص کن تا بفهمی مشکلت چیه و اصلاح کنی
نام جدول چیه؟ وقتی نام جدول مشخص شد نام کلاس متناظرش هم مشخص میشه که میتونی در List<tbl> source به جای tbl نام کلاس متناظر جدول رو بزاری.
آیا رابطه روی جدول از خودش به خودش ایجاد کردی(رابطه بین pid و id) یا نه؟ اگر نه از کدی استفاده کن که پستهای قبلی گفتم.

ممنون داداش حل شد، دقیقا چیزی که شما کدشو دادین
منتها من pid رو توی دیتابیس بصورت nvarchar قرار داده بودم و موقع اجرا کد خطا میداد چون string بود نه int
من اومدم int? parentId, رو به صورت string parentId تغییر دادم
حالا علامت ؟ جلوی int چی بود؟

Vidico
چهارشنبه 11 آذر 1394, 19:11 عصر
به لطف دوست گل Mahmoud.Afrad (http://barnamenevis.org/member.php?71297-Mahmoud-Afrad) تونستم treeview رو از پایگاه داده sql server به روش ارتباطی linq پرش کنم

حال سوالم این هست که چطور وقتی روی یک گزینه از گزینه های treeview کلیک می کنم، شماره ID همون گزینه از دیتابیس رو بدست بیارم
میدونید میخوام گزینه های ویرایش، حذف، جدید رو بهش اضافه کنم

ممنون میشم راهنمائی کنید :قلب:

Mahmoud.Afrad
چهارشنبه 11 آذر 1394, 20:30 عصر
یک کلاس از کلاس TreeNode مشتق کن و یک پراپرتی از نوع کلاسی که متناظر جدول هست تعریف کن.

class CustomeNode : TreeNode
{
private tbl _tblNode;

public tbl TblNode
{
get { return _tblNode; }
private set
{
_tblNode = value;
if (value != null) this.Text = value.name;
}
}

public CustomeNode(tbl tblObj)
{
this.TblNode = tblObj;
if (tblObj != null)
this.Text = tblObj.name;
}
}

در متد AddNodes یک نمونه از کلاس بالا بساز و مقدار دهی کن. شئ child رو به سازنده بفرستید تا در _tblNode قرار بگیره. contextmenustrip رو هم برابر منویی که ساختید قرار بدید.
برای اینکه node که راست کلیک روی اون انجام میشه رو بدست بیارید به صورت زیر یک فیلد تعریف و در رویداد mouseup تری ویو مقدار بدید.

private CustomeNode _rightClickedNode;

private void treeView1_MouseUp(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Right)
{
TreeView tv = sender as TreeView;
Point p = e.Location;
_rightClickedNode = tv.GetNodeAt(p) as CustomeNode;
}
}


خب همه این کارها رو کردیم تا در هر منویی که به نود راست کلیک شده نیاز داریم بتونیم به راحتی به خصوصیات شئ مورد نظر دسترسی داشته باشید (حتما چک کنید _rightClickedNode نال (null) نباشه. از طریق پراپرتی TblNode هم به شئ ای که از دیتابیس واکشی کردیم دسترسی داریم و میتونیم خصوصیاتش مثل id رو بدست بیاریم.

private void addNodeToolStripMenuItem_Click(object sender, EventArgs e)
{
if (_rightClickedNode != null)
{
MessageBox.Show(_rightClickedNode.TblNode.Id.ToStr ing());
}
}

Vidico
پنج شنبه 12 آذر 1394, 16:46 عصر
مهندس جان دست گلت درد نکنه، فدایی داری به مولا

یه خورده دیگه راهنمائی می کنید؟ من زیاد وارد نیستم بخاطر همون گیج میزنم :افسرده:

Vidico
شنبه 14 آذر 1394, 19:16 عصر
یک کلاس از کلاس TreeNode مشتق کن و یک پراپرتی از نوع کلاسی که متناظر جدول هست تعریف کن.

class CustomeNode : TreeNode
{
private tbl _tblNode;

public tbl TblNode
{
get { return _tblNode; }
private set
{
_tblNode = value;
if (value != null) this.Text = value.name;
}
}

public CustomeNode(tbl tblObj)
{
this.TblNode = tblObj;
if (tblObj != null)
this.Text = tblObj.name;
}
}

در متد AddNodes یک نمونه از کلاس بالا بساز و مقدار دهی کن. شئ child رو به سازنده بفرستید تا در _tblNode قرار بگیره. contextmenustrip رو هم برابر منویی که ساختید قرار بدید.
برای اینکه node که راست کلیک روی اون انجام میشه رو بدست بیارید به صورت زیر یک فیلد تعریف و در رویداد mouseup تری ویو مقدار بدید.

private CustomeNode _rightClickedNode;

private void treeView1_MouseUp(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Right)
{
TreeView tv = sender as TreeView;
Point p = e.Location;
_rightClickedNode = tv.GetNodeAt(p) as CustomeNode;
}
}


خب همه این کارها رو کردیم تا در هر منویی که به نود راست کلیک شده نیاز داریم بتونیم به راحتی به خصوصیات شئ مورد نظر دسترسی داشته باشید (حتما چک کنید _rightClickedNode نال (null) نباشه. از طریق پراپرتی TblNode هم به شئ ای که از دیتابیس واکشی کردیم دسترسی داریم و میتونیم خصوصیاتش مثل id رو بدست بیاریم.

private void addNodeToolStripMenuItem_Click(object sender, EventArgs e)
{
if (_rightClickedNode != null)
{
MessageBox.Show(_rightClickedNode.TblNode.Id.ToStr ing());
}
}

کجایی داداش :افسرده: من نتونستم اینو راش بندازم
نیاز به راهنمایی بیشتر دارم

Mahmoud.Afrad
دوشنبه 16 آذر 1394, 03:39 صبح
مشکلتو بگو. اینکه نمیتونی معنی نداره. کد آماده هست فقط کافیه به جای Tbl نام جدول و به جای id , name پراپرتی مناسب رو استفاده کنی.

یه راهش هم اصلاح کد اولی هست که قرار دادم.با استفاده از tag به صورت زیرهم میتونی

private void AddNodes(List<tbl> source, int? parentId, TreeNodeCollection tnCollection)
{
var childs =
from item in source
where item.pid == parentId
select item;
foreach (tbl child in childs)
{
TreeNode tn = tnCollection.Add(child.Id.ToString(), child.name);
tn.Tag = child;
AddNodes(source, child.Id, tn.Nodes);
}
}

private void addNodeToolStripMenuItem_Click(object sender, EventArgs e)
{
if (_rightClickedNode != null)
{
tbl tblInfo = _rightClickedNode.Tag as tbl;
MessageBox.Show(tblInfo.Id.ToString());
}
}

private TreeNode _rightClickedNode;

private void treeView1_MouseUp(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Right)
{
TreeView tv = sender as TreeView;
Point p = e.Location;
_rightClickedNode = tv.GetNodeAt(p) as TreeNode;
}
}

Vidico
دوشنبه 16 آذر 1394, 18:53 عصر
private void AddNodes(List<coding_data> source, string parentId, TreeNodeCollection tnCollection)
// تابع لود کدینگ از درخت واره
{
var childs = from item in source where item.pid == parentId select item;
foreach (coding_data child in childs)
{
// var tvt = child.id + " - " + child.name;
TreeNode tn = tnCollection.Add(child.id, child.name);
tn.ContextMenuStrip = contextMenuStrip1;
tn.Tag = child;
AddNodes(source, child.id, tn.Nodes);
}
}// the end!-----------------------------------------------------------------------------


private void addNodeToolStripMenuItem_Click(object sender, EventArgs e)
{
if (_rightClickedNode != null)
{
coding_data tblInfo = _rightClickedNode.Tag as coding_data;
MessageBox.Show(tblInfo.id);
}
}


private TreeNode _rightClickedNode;


private void treeView1_MouseUp(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Right)
{
TreeView tv = sender as TreeView;
Point p = e.Location;
_rightClickedNode = tv.GetNodeAt(p) as TreeNode;
}
}


داداش دستت درد نکنه
والله من کدم اینه ولی کار نمیکنه
یعنی قبلا که درخت رو پر کرده بود یم با دستوری که شما داده بودین
حال کدم شده این، ولی موفع راست کلیک اتفاقی نمی افته، البته بگم که منو استریپ 1 باز میشه و گزینه هایی که خودم درست کرده بودم رو نشون میده که این قبلا هم انجام شده بود
شرمنده تو رو خدا این همه بهتون زحمت دادم، ببخشید

Mahmoud.Afrad
دوشنبه 16 آذر 1394, 20:55 عصر
اگر میتونی پروژه رو پیام خصوصی کن یه نگاه بندازم.

Vidico
دوشنبه 16 آذر 1394, 22:29 عصر
اگر میتونی پروژه رو پیام خصوصی کن یه نگاه بندازم.
داداش پیغام خصوصی کردم

Yanehsar
جمعه 20 آذر 1394, 21:27 عصر
باید به صورت بازگشتی بنویسی.

فراخوانی این متد با قبلی فرقی نداره.
سلام
مطابق دستورات شما پیش رفتم اما موافق نشدم
ممنون میشم یه نگاه بندازید هیچ خطائی نداره اما بارگذاری نمیشه!!!
137405

Mahmoud.Afrad
شنبه 21 آذر 1394, 02:05 صبح
سلام
مطابق دستورات شما پیش رفتم اما موافق نشدم
ممنون میشم یه نگاه بندازید هیچ خطائی نداره اما بارگذاری نمیشه!!!


دیتاگرید شما پر میشه؟ یه عکس از اطلاعاتش همراه IDparent میزاری؟! در ضمن رکوردهایی که ریشه هستند باید IDparentشون null باشه تا کوئری خروجی داشته باشه.

Vidico
شنبه 21 آذر 1394, 11:24 صبح
Mahmoud.Afrad (http://barnamenevis.org/member.php?71297-Mahmoud-Afrad) داداش دستت درد نکنه، خیلی ممنون از شما
داداش من میتونم درخت واره خودمو از دیتابیس بخونم ولی هنوز مشکل این بدست آوردن ID گزینه سلکت شده رو نتونستم به دست بیارم
پروژه ای هم که فرستادم برای شما و شما روش کار کردین و دوباره فرستادین برام اون هم جواب نداد

داداش نیاز به کمک دارم :گریه:

Mahmoud.Afrad
شنبه 21 آذر 1394, 12:48 عصر
Mahmoud.Afrad (http://barnamenevis.org/member.php?71297-Mahmoud-Afrad) داداش دستت درد نکنه، خیلی ممنون از شما
داداش من میتونم درخت واره خودمو از دیتابیس بخونم ولی هنوز مشکل این بدست آوردن ID گزینه سلکت شده رو نتونستم به دست بیارم
پروژه ای هم که فرستادم برای شما و شما روش کار کردین و دوباره فرستادین برام اون هم جواب نداد

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

با توجه به اینکه هنوز به جواب نرسیدید یک پروژه نمونه ایجاد کردم. روی گره ها راست کلیک و عملیات مورد نظر رو انتخاب کنید. توضیح خاصی نمیدم چون کدها گویا هست. vs 2015 , sqlserver localdb 2014

Vidico
شنبه 21 آذر 1394, 16:58 عصر
شما کدهای منو فقط کپی کرده بودی و رویدادها رو به رویدادگردانها متصل نکرده بودی و عملا اتفاقی نمی افتاد. من هم نتونستم پروژه شما رو به خاطر کامپوننت هایی که استفاده کرده بودی اجرا کنم.

با توجه به اینکه هنوز به جواب نرسیدید یک پروژه نمونه ایجاد کردم. روی گره ها راست کلیک و عملیات مورد نظر رو انتخاب کنید. توضیح خاصی نمیدم چون کدها گویا هست. vs 2015 , sqlserver localdb 2014
فدات مهندس جان ، میرم که تستش کنم،
راستی مهندس این رابطه توی جدول رو چطوری ایجاد کردین؟؟ تصویر ضمیمه (دیاگرامه؟)
من رابطه ایجاد نکردم

Yanehsar
شنبه 21 آذر 1394, 18:17 عصر
دیتاگرید شما پر میشه؟ یه عکس از اطلاعاتش همراه IDparent میزاری؟! در ضمن رکوردهایی که ریشه هستند باید IDparentشون null باشه تا کوئری خروجی داشته باشه.
اره دیتاگریدم پر شده .البته اینو بگم من بین ID و IDparent ارتباط برقرار نکردم و از روش دومی که شما گفته بودید استفاده کردم .
137418

Vidico
شنبه 21 آذر 1394, 20:04 عصر
شما کدهای منو فقط کپی کرده بودی و رویدادها رو به رویدادگردانها متصل نکرده بودی و عملا اتفاقی نمی افتاد. من هم نتونستم پروژه شما رو به خاطر کامپوننت هایی که استفاده کرده بودی اجرا کنم.

با توجه به اینکه هنوز به جواب نرسیدید یک پروژه نمونه ایجاد کردم. روی گره ها راست کلیک و عملیات مورد نظر رو انتخاب کنید. توضیح خاصی نمیدم چون کدها گویا هست. vs 2015 , sqlserver localdb 2014

خطا می گیره ، اعصابم به هم ریخت این Treeview خستم کرد

Mahmoud.Afrad
شنبه 21 آذر 1394, 21:27 عصر
اره دیتاگریدم پر شده .البته اینو بگم من بین ID و IDparent ارتباط برقرار نکردم و از روش دومی که شما گفته بودید استفاده کردم .


متوجه شدم شرط رو اشتباه نوشتی. باید با parentId که پارامتر متد هست مقایسه بشه:
where item.IDparent == parentId

Yanehsar
شنبه 21 آذر 1394, 21:39 عصر
متوجه شدم شرط رو اشتباه نوشتی. باید با parentId که پارامتر متد هست مقایسه بشه:
where item.IDparent == parentId
مرسی از راهنمائی شما درست شدش .
دو تا سوال دارم
1-اگر برنامه به صورت لایه ای نوشته باشیم چیکار باید بکنیم ؟؟؟؟پارامترهای ارسالی بین کلاسها چطوری میشه ؟؟؟و فرم اصلی !!!
2-حالا یه سوال اگر ما نود ها پدر رو داخل یه جدول بذاریم و فرزندها داخل یه جدول دیگه و ارتباط بدیم بین این دو جدول بهتره یا اینکه از همین روش استفاده کنیم ؟؟؟؟ ضمن اینکه رکوردهای نود پدر فقط شامل نام نباشن و اطلاعات دیگه ای هم داخلش قرار داشته باشه

Vidico
دوشنبه 23 آذر 1394, 13:59 عصر
سلام و خسته نباشید
من به روش دیگه ای شماره ای دی گزینه سلکت شده رو بدست آوردم
http://barnamenevis.org/showthread.php?514454-%D8%AC%D8%AF%D8%A7-%DA%A9%D8%B1%D8%AF%D9%86-%D8%B9%D8%AF%D8%AF-%D9%85%D9%88%D8%AC%D9%88%D8%AF-%D8%AF%D8%B1-%D8%B1%D8%B4%D8%AA%D9%87
حالا موند چطوری با شماره بدست اومده، (ای دی) مقادیر رو توی دیتابیس ادد کنم

مسئله اینه که مثلا توی زیر گروه یکی از شاخه ها قراره صد تا ردیف ثبت بشه، حال این ریدف ها از 1 شروع بشه تا 100 موقع ثبت چک شود که از بین این مقدار کدوم ردیفش خالیه ثبت بشه شاید همه مقادیر پره و مقدار 1 خالیه!

Yanehsar
جمعه 18 دی 1394, 20:46 عصر
متوجه شدم شرط رو اشتباه نوشتی. باید با parentId که پارامتر متد هست مقایسه بشه:
where item.IDparent == parentId

سلام
مشکل من حل شدش حالا داخل یکی دیگه از برنامه هام میخوام کار کنم حالا طبق همون کدها کار انجام دادم که خطائی اسمبلی میده آیا نیاز به رفرنس خاصی داره ؟؟؟
138277

Yanehsar
یک شنبه 20 دی 1394, 22:32 عصر
سلام
مشکل من حل شدش حالا داخل یکی دیگه از برنامه هام میخوام کار کنم حالا طبق همون کدها کار انجام دادم که خطائی اسمبلی میده آیا نیاز به رفرنس خاصی داره ؟؟؟
138277
دوستان ممنون میشم راهنمائیم کنید مشکل کارم کجاست ؟؟؟؟؟؟؟؟؟؟؟؟

Vidico
یک شنبه 20 دی 1394, 22:46 عصر
سلام و خسته نباشید
من به روش دیگه ای شماره ای دی گزینه سلکت شده رو بدست آوردم
http://barnamenevis.org/showthread.php?514454-%D8%AC%D8%AF%D8%A7-%DA%A9%D8%B1%D8%AF%D9%86-%D8%B9%D8%AF%D8%AF-%D9%85%D9%88%D8%AC%D9%88%D8%AF-%D8%AF%D8%B1-%D8%B1%D8%B4%D8%AA%D9%87
حالا موند چطوری با شماره بدست اومده، (ای دی) مقادیر رو توی دیتابیس ادد کنم

مسئله اینه که مثلا توی زیر گروه یکی از شاخه ها قراره صد تا ردیف ثبت بشه، حال این ریدف ها از 1 شروع بشه تا 100 موقع ثبت چک شود که از بین این مقدار کدوم ردیفش خالیه ثبت بشه شاید همه مقادیر پره و مقدار 1 خالیه!

از دوستان کسی نیست راهنمائی بکنه؟
فرض بر مثال تفصیلی در حسابداری رو در نظر بگیرید

وقتی شماره گزینه سلکت شده به دست اومد حالا میخواهیم برای آن یک زیر شاخه ثبت کنیم
که ممکنه از 001 شروع بشه تا 999 الان میخوام بدونم کدوم خانه یا عددی خالی هست اونجا ثبت بشه
امکان داره تا 059 تا ثبت کردبم ولی گزینه 024 خالی باشه شاید بدلیل حذف کاربر
مبخوام به جای ثبت توی 060 بیاد توی 024 ثبت بشه