我想用ascx写一个组件,组件上有一个textbox和一个treeview,功能是当选择treeview的结点后,结点的值赋给textbox和这个组件的一个属性,赋值操作是做在treeview的SelectedNodeChanged事件中.
问题是:当我在测试页中调用该组件的属性时,得不到treeview选择的结点的值
代码如下:
namespace myControl
{
    public partial class orgSelect : System.Web.UI.UserControl
    {
        ERPDBoper dboper = new ERPDBoper();
        String org_id;
        String org_Name;
        public String orgID
        {
            set
            {
                org_id = value;
            }
            get
            {
                if (org_id != null)
                    return org_id;
                else return "";
            }
        }
        public String orgName
        {
            set
            {
                org_Name = value;
            }
            get
            {
                if (org_Name != null)
                    return org_Name;
                else return "";
            }
        }
        protected void Page_Load(object sender, EventArgs e)
        {
            bindTree();
            if (Session["org_id"] != null && Session["org_Name"] != null)
            {
                org_id = Session["org_id"].ToString();
                org_Name = Session["org_Name"].ToString();
            }
        }
        public void bindTree()
        {
            DataSet tempds = new DataSet();
            String sql = "select * from OR_ORGANIZATIONS";
            tempds = dboper.getBinding(sql, "tb");        }
        protected void trvOrg_SelectedNodeChanged(object sender, EventArgs e)
        {
            txtbOrgID.Text = trvOrg.SelectedNode.Text.ToString();
            txtbOrgName.Text = trvOrg.SelectedNode.Value.ToString();
            //org_id = trvOrg.SelectedNode.Text.ToString();
            //org_Name = trvOrg.SelectedNode.Value.ToString();
            Session["org_id"] = trvOrg.SelectedNode.Text.ToString();
            Session["org_Name"] = trvOrg.SelectedNode.Value.ToString();
        }
    }
    public class myNode : System.Web.UI.WebControls.TreeNode
    {
        public String orgID;
        public String orgName;
        public myNode(String id, String Name)
        {
            orgID = id;
            orgName = Name;
        }
        public String ID
        {
            set
            {
                orgID = value;
            }
            get
            {
                return orgID;
            }
        }
        public String Name
        {
            set
            {
                orgName = value;
            }
            get
            {
                return orgName;
            }
        }
    }
}

解决方案 »

  1.   

    问题刚得到初步解决,但是出现了新的问题,每次取到的值是treeview上一次
    选择的结点值,不是当前选的结点值
    代码如下:
    namespace myControl
    {
        public partial class orgSelect : System.Web.UI.UserControl
        {
            ERPDBoper dboper = new ERPDBoper();
            String org_id;
            String org_Name;
            public String orgID
            {
                set
                {
                    ViewState["orgID"] = value;
                }
                get
                {
                    if (ViewState["orgID"] != null)
                        return (String)ViewState["orgID"];
                    else return "";
                }
            }
            public String orgName
            {
                set
                {
                    ViewState["orgID"] = value;
                }
                get
                {
                    if (ViewState["orgID"] != null)
                        return (String)ViewState["orgID"];
                    else return "";
                }
            }
            protected void Page_Load(object sender, EventArgs e)
            {
                bindTree();            
            }
            public void bindTree()
            {
                DataSet tempds = new DataSet();
                String sql = "select * from OR_ORGANIZATIONS";
                tempds = dboper.getBinding(sql, "tb");        }
            protected void trvOrg_SelectedNodeChanged(object sender, EventArgs e)
            {
                txtbOrgID.Text = trvOrg.SelectedNode.Text.ToString();
                txtbOrgName.Text = trvOrg.SelectedNode.Value.ToString();
               
                this.orgID = trvOrg.SelectedNode.Text.ToString();
                this.orgName = trvOrg.SelectedNode.Value.ToString();
            }
        }
        public class myNode : System.Web.UI.WebControls.TreeNode
        {
            public String orgID;
            public String orgName;
            public myNode(String id, String Name)
            {
                orgID = id;
                orgName = Name;
            }
            public String ID
            {
                set
                {
                    orgID = value;
                }
                get
                {
                    return orgID;
                }
            }
            public String Name
            {
                set
                {
                    orgName = value;
                }
                get
                {
                    return orgName;
                }
            }
        }
    }
      

  2.   

      protected   void   Page_Load(object   sender,   EventArgs   e) 
                    { 
                          if(!ispostback)//这句话估计是你忘记了
                          {
                            bindTree();    
                           ]                     
                    }