Treeview问题查询 [英] Treeview Issue Queries

查看:45
本文介绍了Treeview问题查询的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述



我在树状视图中遇到了一些问题.
我的树状视图看起来像这样

Hi,

I have got some issues with tree view.
My Tree View looks like this

*****************************************

·         ABC

o   123

o   345

·         DEF

o   456

o   567

·         TYU

o   123

o   789

*****************************************


问题:

1.当我单击TYU的123个子节点时,在应用程序中选定的节点父节点是ABC.我可以知道为什么它会以这种方式运行吗?

2.当我选择DEF或TYU时,选择将移至ABC本身.知道为什么会这样.

代码:
对于填充树:


Questions:

1. When I am clicking on 123 child of TYU, the selected node parent is ABC in application. May I know why it is behaving in this way?

2. When I am selecting DEF or TYU, selection is moving to ABC itself. Any idea why this is happening.

Code:
For Populating tree:

TreeNode lObjTreeNode = null;

string[] lArrTemp = null;
string lStrTemp = "";
trvRegionEnvMain.Nodes.Clear();
lStrTemp = Session[lObjClsGlobals.mStrViewStateRegionsList].ToString().Trim();
lArrTemp = lStrTemp.Split(',');
lObjTreeNode = new TreeNode("Regions And Environments");
lObjTreeNode.Value = lObjClsGlobals.CONST_STR_MAIN_TREENODE_TYPE_ROOT;
trvRegionEnvMain.Nodes.Add(lObjTreeNode);
foreach (string lStrItem in lArrTemp)
{
  lObjTreeNode = null;
  lObjTreeNode = new TreeNode(lStrItem.Trim());
  lObjTreeNode.SelectAction = treeNodeSelectAction.Select;
  lObjTreeNode.Value = lObjClsGlobals.CONST_STR_MAIN_TREENODE_TYPE_REGION;
  trvRegionEnvMain.Nodes[0].ChildNodes.Add(lObjTreeNode);
  lFnFillChildNodes(lObjTreeNode);
}

public void lFnFillChildNodes(TreeNode aObjTNode)
{
  try
  {
    ArrayList lObjArrLst = null;
    string[] lArrStrEnv = null;
    string lStrRegion = "";
    string[] lArrTemp = null;
    if (aObjTNode == null)
    {
      return;
    }
    lArrTemp = null;
    lObjArrLst = Session[lObjClsGlobals.mStrViewStateAllRegionsWithEnvList] as ArrayList;

    foreach (TreeNode lObjTN in trvRegionEnvMain.Nodes[0].ChildNodes)
    {
      if (lObjTN.Text == aObjTNode.Text)
      {
        lObjTN.Selected = true;
      }
    }
    string lStrCurrentNodeRegion = "";
    lStrCurrentNodeRegion = trvRegionEnvMain.SelectedNode.Text.Trim();
    foreach (string lStrItem in lObjArrLst)
    {
      if (lStrItem.Trim() == "")
      { continue; }
      lArrTemp = lStrItem.Split(',');
      lStrRegion = lArrTemp[0];
      if (lStrRegion.Trim() == lStrCurrentNodeRegion.Trim())
      {
        //trvRegionEnvMain.Nodes[0].ChildNodes[lIntNodeCnt].Selected = true;
        lArrStrEnv = lArrTemp[1].Trim().Split(':');
        foreach (string lStrEnv in lArrStrEnv)
        {
          string[] lArrActEnvReg = lStrEnv.Trim().Split('~');
          TreeNode lObjTreeNode = null;
          lObjTreeNode = new TreeNode(lArrActEnvReg[0].Trim());
          lObjTreeNode.SelectAction = TreeNodeSelectAction.Select;
          lObjTreeNode.Value = lObjClsGlobals.CONST_STR_MAIN_TREENODE_TYPE_ENV + "~" + lArrActEnvReg[1].Trim();
          trvRegionEnvMain.SelectedNode.ChildNodes.Add(lObjTreeNode);
        }
      }
    }
  }
  catch (Exception)
  {
    throw;
  }
}



OP的更新:
这是Treenode选择更改代码..



UPDATE from OP:
Here is Treenode select change code..

protected void trvRegionEnvMain_SelectedNodeChanged(object sender, EventArgs e)
      {
          try
          {
              string lStrTemp = "";
              if (trvRegionEnvMain.SelectedNode == null)
              {
                  return;
              }
              if (trvRegionEnvMain.SelectedNode.Value.Trim() == lObjClsGlobals.CONST_STR_MAIN_TREENODE_TYPE_ROOT)
              {
                  return;
              }

              if (trvRegionEnvMain.SelectedNode.Value.Trim() == lObjClsGlobals.CONST_STR_MAIN_TREENODE_TYPE_REGION)
              {

                  Session[lObjClsGlobals.mStrViewStateRegion] = trvRegionEnvMain.SelectedNode.Text.Trim();
                  Session[lObjClsGlobals.mStrViewStateOfActualEnvironment] = "";
                  if (trvRegionEnvMain.SelectedNode.ChildNodes.Count > 0)
                  {
                      Session[lObjClsGlobals.mStrViewStateOfActualEnvironment] = trvRegionEnvMain.SelectedNode.ChildNodes[0].Text.Trim();
                      lStrTemp = trvRegionEnvMain.SelectedNode.ChildNodes[0].Value.Trim();
                      if (lStrTemp.Split('~') != null)
                      {
                          Session[lObjClsGlobals.mStrViewStateForEnvandRegSplitDetails] = lStrTemp.Split('~')[1].Trim();
                      }
                  }

                  return;
              }
              string lStrTempEnv = "";
              if (trvRegionEnvMain.SelectedNode.Value.ToString().Split('~') != null)
              {
                  lStrTempEnv = trvRegionEnvMain.SelectedNode.Value.ToString().Split('~')[0];
              }
              if (lStrTempEnv.Trim() == lObjClsGlobals.CONST_STR_MAIN_TREENODE_TYPE_ENV)
              {
                                      Session[lObjClsGlobals.mStrViewStateOfActualEnvironment] = trvRegionEnvMain.SelectedNode.Text.Trim();
                  lStrTemp = trvRegionEnvMain.SelectedNode.Value.Trim();
                  if (lStrTemp.Split('~') != null)
                  {
                      Session[lObjClsGlobals.mStrViewStateForEnvandRegSplitDetails] = lStrTemp.Split('~')[1].Trim();
                  }
                  if (trvRegionEnvMain.SelectedNode.Parent != null)
                  {
                      Session[lObjClsGlobals.mStrViewStateRegion] = trvRegionEnvMain.SelectedNode.Parent.Text.Trim();
                  }

                  return;
              }
          }
          catch (Exception)
          {
              throw;
          }
      }

推荐答案

您是否在Page Loaded事件上加载TreeView?如果是,请在调用负载之前检查IsPostback.

我看到您好像在没有任何条件检查的情况下将TreeView加载到了已加载的页面上.因此,TreeView每次加载时都会使用项目重新生成.

您的代码应该是,

Are you loading the TreeView on the Page Loaded event? If yes, check for IsPostback before calling the load.

I see like you are loading the TreeView on the Page Loaded without any condition check. So, the TreeView is regenerated with items everytime it is loaded.

Your code supposed to be,

protected void Page_Loaded (object sender, EventArgs e)
{
    if (!IsPostback)
    {
        //Your loading logic should be here.
    }
}


Venkat,

感谢您的回复.但是我以相同的方式填充树,
Hi Venkat,

Thanks for reply. But I am populating tree in the same way,


这篇关于Treeview问题查询的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆