PDA

View Full Version : سوال: افزودن فرزند جدید در TreeView



اوبالیت به بو
پنج شنبه 03 شهریور 1390, 16:08 عصر
سلام

بنده در اضافه نمودن گره فرزند جدید در TreeView مشکل دارم. خطای مورد نظر در خط سبز رنگ ظاهر میشه. کدهای بنده:


protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
CreateParents();
}
}

private void CreateParents()
{
CreateNodes(0,null);
}

private void CreateNodes(int Parent_ID,TreeNode N)
{
DataSet DS = new DataSet();

DS = Categories.SelectByParentID(Parent_ID);

if (DS.Tables[0].Rows.Count > 0)
{
foreach (DataRow dr in DS.Tables[0].Rows)
{
TreeNode tn = new TreeNode();

tn.Value = dr["ID"].ToString();
tn.Text = dr["Title"].ToString();
tn.ToolTip = dr["Description"].ToString();

if (Parent_ID == 0)
{
tvCategories.Nodes.Add(tn);
}
else
{
N.Parent.ChildNodes.Add(tn);
}
}
}
}

protected void tvCategories_SelectedNodeChanged(object sender, EventArgs e)
{
CreateNodes(Convert.ToInt32(tvCategories.SelectedV alue),tvCategories.SelectedNode);
}



عنوان خطا:

Object reference not set to an instance of an object.

d_derakhshani
پنج شنبه 03 شهریور 1390, 22:40 عصر
خطاي مربوطه مي تواند از هر كجاي برنامه باشد. دقيقا ذكر كنيد كدام خط خطا دارد؟

اوبالیت به بو
جمعه 04 شهریور 1390, 01:49 صبح
خطاي مربوطه مي تواند از هر كجاي برنامه باشد. دقيقا ذكر كنيد كدام خط خطا دارد؟



خط شماره 36.

با رنگ سبز مشخص کردم.

d_derakhshani
جمعه 04 شهریور 1390, 13:44 عصر
Parent رو حذف كنيد. شما روي هر Node كه كليك مي كنيد، ميخوايد فرزندهاي اون نود باز شن، پس N خود Node كليك شده است و ChildNodes نود هاي فرزند آن پس N.Parent بي معنا بوده و اشاره به Null دارد زيرا نودهاي ريشه Parent ندارند.(من با نگاه از كد شما جواب دادم و تستي نكردم و صرفا نيز به مورد گزارش شده نگاه انداختم و بازبيني براي خطاهاي ديگه انجام ندادم)

اوبالیت به بو
شنبه 05 شهریور 1390, 01:06 صبح
درسته همین کار رو انجام دادم.

اما مساله حالا چیزه دیگری شد: فرزند تا 1 سطح بیشتر ساخته نمیشه(!)

یعنی فرزند ها ساخته میشن. اما این علامت + باز نمیشه که دیده بشن کاربر باید دستی روی + کلیک کنه.

ASPX
شنبه 05 شهریور 1390, 09:24 صبح
. اما این علامت + باز نمیشه که دیده بشن کاربر باید دستی روی + کلیک کنه.
از ExpandAll استفاده کن