سلام ، اشکال در حلقه for داخلی هستش . ببینید شما باید یک شرط بزارید در این حلقه :
if (dtNodBookName.Rows[j].ItemArray[2].ToString() == dtNoDeBookType.Rows[i].ItemArray[0].ToString())
{
treeView1.Nodes[i].Nodes.Add(dtNodBookName.Rows[j].ItemArray[1].ToString());
}
البته من به احتمال زیاد اندیس ها رو اشتباه گذاشتم و شما باید اصلاح کنید . ببینید شما باید کتاب های هر دسته رو در اون دسته خاص قرار بدین . برای اینکار باید بررسی کنیم که آیا اصلا این کتاب فعلی در این دسته هست یا نه ؟ خوب Id دسته رو به راحتی میشه بدست آورد ( از طریق حلقه for خارجی ) و باید با BookTypeId کتاب فعلی که از طریق حلقه for داخلی بدست میاد مقایسه کنیم . اگر برابر بودن باید به زیر Nod فعلی اضافه بشه .
** حلقه for داخلی رو هم از 0 شروع کنید .
for (int j = 0; j < dtNodBookName.Rows.Count; j++)
{
if (dtNodBookName.Rows[j].ItemArray[2].ToString() == dtNoDeBookType.Rows[i].ItemArray[0].ToString())
{
treeView1.Nodes[i].Nodes.Add(dtNodBookName.Rows[j].ItemArray[1].ToString());
}
}
در حلقه بالا من فرض رو بر این گرفتم که ستون BookTypeIdFK سومین ستون هستش ( با اندیس 2 ) و در جدول tbl_BookType ستون BookTypeId اولین ستون هست . اندیس ها رو به به شکل درست جابه جا کنید .
ولی مشکل اصلیتون همونطور که گفتم نذاشتن یک if هست