Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 在TreeView.DataBind()之后设置SelectedNode_Asp.net_Treeview - Fatal编程技术网

Asp.net 在TreeView.DataBind()之后设置SelectedNode

Asp.net 在TreeView.DataBind()之后设置SelectedNode,asp.net,treeview,Asp.net,Treeview,我正在页面中使用ASP.NET TreeView控件。 我使用CreateChildControls()(覆盖)构建树 我通过填写表单创建一个新节点,然后调用此方法 protected void btnSubmit_Click(object sender, EventArgs e) { try { var entityIdHidden = this.FindControl<HiddenField>("SelectedNo

我正在页面中使用ASP.NET TreeView控件。 我使用CreateChildControls()(覆盖)构建树

我通过填写表单创建一个新节点,然后调用此方法

protected void btnSubmit_Click(object sender, EventArgs e)
    {
        try
        {
            var entityIdHidden = this.FindControl<HiddenField>("SelectedNodeId");


            if (entityIdHidden != null)
                if (entityIdHidden.Value == "")
                    if (!CheckifSiteAlreadyExists())
                        return;


            if (!CheckIfEntityHasParent())
                return;


            var user = AuthenticationManager.LoggedInUser;
            WorkflowAPI api = new WorkflowAPI();


            Dictionary<string, object> entityFields = GetEntityControls();
            AttachmentEntity image = AttchmentItem("AsyncFileUpload2");


            if (image != null)
                entityFields.Add("fldImage", image);


            int entityId = 0;
            bool isSite = CheckIfEntityIsSite();
            if ((entityIdHidden != null) && (!string.IsNullOrEmpty(entityIdHidden.Value)))
            {
                int.TryParse(entityIdHidden.Value, out entityId);
            }
            api.UpdateACtivityFields(WorkflowInstanceId, user, this.GetFormUIViewModel().ActivityInstance, entityFields, entityId, "EntityType");


            List<DBParameter> prms = new List<DBParameter>();
            prms.Add(new DBParameter(System.Data.DbType.Int32, WorkflowInstanceId, "iwf"));
            prms.Add(new DBParameter(System.Data.DbType.Int32, entityId, "entityId"));
            int.TryParse(DBUtil.ExecuteScalar("USP_TEN_Entities_UpdateDynamicsValues", prms.ToArray(),
                CommandType.StoredProcedure).ToString(), out entityId);


            Dictionary<string, object> siteFields;
            if (isSite)
            {
                siteFields = GetSiteControls();
                siteFields.Add("fldParentid", entityId);
                api.UpdateACtivityFields(WorkflowInstanceId, user, this.GetFormUIViewModel().ActivityInstance, siteFields, entityId, "SiteDetails");
            }


            entityIdHidden.Value = entityId.ToString();
            this.CreateChildControls();


            //Response.Redirect(Request.RawUrl);
        }
        catch (Exception ex)
        {
            PNMsoft.Sequence.Diagnostics.DiagnosticUtility.EventLog.LogError(String.Format("TreeViewOrg.aspx:    btnSave_Click(), {0}", ex.Message));
        }
    }
protectedvoid btnSubmit\u单击(对象发送方,事件参数e)
{
尝试
{
var entityIdHidden=this.FindControl(“SelectedNodeId”);
if(entityIdHidden!=null)
如果(entityIdHidden.Value==“”)
如果(!CheckifSiteAlreadyExists())
返回;
如果(!CheckIfEntityHasParent())
返回;
var user=AuthenticationManager.LoggedInUser;
WorkflowAPI=新的WorkflowAPI();
Dictionary entityFields=GetEntityControl();
AttachmentEntity image=AttchmentItem(“AsyncFileUpload2”);
如果(图像!=null)
添加(“fldImage”,图像);
int entityId=0;
bool isSite=CheckIfEntityIsSite();
如果((entityIdHidden!=null)&(!string.IsNullOrEmpty(entityIdHidden.Value)))
{
int.TryParse(entityIdHidden.Value,out entityId);
}
api.UpdateACtivityFields(WorkflowInstanceId,用户,this.GetFormUIViewModel().ActivityInstance,entityFields,entityId,“EntityType”);
List prms=新列表();
添加(新的DBParameter(System.Data.DbType.Int32,WorkflowInstanceId,“iwf”);
添加(新的DBParameter(System.Data.DbType.Int32,entityId,“entityId”);
int.TryParse(DBUtil.ExecuteScalar(“USP\u十个实体\u更新的动态值”),prms.ToArray(),
CommandType.StoredProcedure).ToString(),out entityId);
词典站点字段;
if(isSite)
{
siteFields=GetSiteControls();
添加(“fldParentid”,entityId);
api.UpdateACtivityFields(WorkflowInstanceId,用户,this.GetFormUIViewModel().ActivityInstance,siteFields,entityId,“SiteDetails”);
}
entityIdHidden.Value=entityId.ToString();
this.CreateChildControls();
//重定向(Request.RawUrl);
}
捕获(例外情况除外)
{
PNMsoft.Sequence.diagnosticsutility.EventLog.LogError(String.Format(“TreeViewOrg.aspx:btnSave_Click(),{0}”,ex.Message));
}
}
此方法使用我输入的详细信息更新数据库

正如您在最后的btnSubmit方法中所看到的,我调用CreateChildControls()方法,因为我需要用最新的数据更新树。 问题是我失去了焦点和SelectedNode


如何返回到最后选择的节点。

首先,请检查您的CreateChildControls()函数是否处于IsPostBack()条件下。如果是,请浏览此链接,它将指导您如何执行此操作。

如果您可以发布代码,这样我们可以方便地帮助您……首先,我编辑了问题,请检查CreateChildControls()函数是否在IsPostBack()条件内。如果是,则通过此链接-。请检查和评论…嗨,我已经使用了你提供的文章,它的作品。谢谢…如果这对你有帮助的话,我会在回答中输入我的评论,所以当其他人将来来到这个页面时,他们会得到适当的参考,当然你也可以给我一些投票。谢谢
    public DataTable CreateTable()
    {
        DataTable dataTable = new DataTable();
        try
        {
            // base.DbConnection.Open();
            dataTable.Columns.Add(idColumnName);
            dataTable.Columns.Add(ParentColumnName);
            dataTable.Columns.Add(valueColumnName);
            List<DBParameter> prms = new List<DBParameter>();
            dataTable = DBUtil.ExecuteReader("sp_GetTreeViewHierarchy", prms.ToArray(), System.Data.CommandType.StoredProcedure);


        }
        catch (Exception ex)
        {
            PNMsoft.Sequence.Diagnostics.DiagnosticUtility.EventLog.LogError(String.Format("TreeViewOrg.aspx:    CreateTable(), {0}", ex.Message));
        }
        return dataTable;
    }
public DataRow[] CreateDataRow(DataTable table)
    {
        // Use the Select method to sort the rows by ParentID
        DataRow[] SortedRows = null;
        try
        {
            SortedRows = table.Select("", levelColumnName + "," + valueColumnName + "," + ParentColumnName);
        }
        catch (Exception ex)
        {
            PNMsoft.Sequence.Diagnostics.DiagnosticUtility.EventLog.LogError(String.Format("TreeViewOrg.aspx:    CreateDataRow(), {0}", ex.Message));
        }


        return SortedRows;
    }


    public XmlDocument CreateXML(DataRow[] SortedRows)
    {
        // create an XmlDocument (with an XML declaration)
        XmlDocument XDoc = new XmlDocument();
        try
        {
            XmlDeclaration XDec = XDoc.CreateXmlDeclaration("1.0", null, null);
            XDoc.AppendChild(XDec);


            // iterate through the sorted data
            // and build the XML document
            foreach (DataRow Row in SortedRows)
            {
                XmlElement NewNode = XDoc.CreateElement("_" + Row[idColumnName].ToString());
                NewNode.SetAttribute(idColumnName, Row[idColumnName].ToString());
                NewNode.SetAttribute(ParentColumnName, Row[ParentColumnName].ToString());
                NewNode.SetAttribute(valueColumnName, Row[valueColumnName].ToString());


                // special case for top level node
                if (int.Parse(Row[ParentColumnName].ToString()) == 0)
                    XDoc.AppendChild(NewNode);  // root node
                else
                {
                    // use XPath to find the parent node in the tree
                    String SearchString;
                    SearchString = String.Format("//*[@" + idColumnName + "=\"{0}\"] ", Row[ParentColumnName].ToString());
                    XmlNode Parent = XDoc.SelectSingleNode(SearchString);


                    if (Parent != null)
                        Parent.AppendChild(NewNode);
                }
            }
        }
        catch (Exception ex)
        {
            PNMsoft.Sequence.Diagnostics.DiagnosticUtility.EventLog.LogError(String.Format("TreeViewOrg.aspx:    CreateXML(), {0}", ex.Message));
        }
        return XDoc;
    }


    public void FillTreeViewFromXML(XmlDocument XDoc)
    {
        try
        {
            // we cannot bind the TreeView directly to an XmlDocument
            // so we must create an XmlDataSource and assign the XML text
            XmlDataSource XDdataSource = new XmlDataSource();
            XDdataSource.ID = DateTime.Now.Ticks.ToString();  // unique ID is required
            XDdataSource.Data = XDoc.OuterXml;


            // we want the full name displayed in the tree so 
            // do custom databindings
            TreeNodeBinding Binding = new TreeNodeBinding();
            Binding.TextField = valueColumnName;
            Binding.ValueField = idColumnName;
            Binding.Target = "#";
            TVOrg.DataBindings.Add(Binding);


            // Finally! Hook that bad boy up!       
            TVOrg.DataSource = XDdataSource;
            TVOrg.DataBind();
        }
        catch (Exception ex)
        {
            PNMsoft.Sequence.Diagnostics.DiagnosticUtility.EventLog.LogError(String.Format("TreeViewOrg.aspx:    FillTreeViewFromXML(), {0}", ex.Message));
        }
    }
protected void btnSubmit_Click(object sender, EventArgs e)
    {
        try
        {
            var entityIdHidden = this.FindControl<HiddenField>("SelectedNodeId");


            if (entityIdHidden != null)
                if (entityIdHidden.Value == "")
                    if (!CheckifSiteAlreadyExists())
                        return;


            if (!CheckIfEntityHasParent())
                return;


            var user = AuthenticationManager.LoggedInUser;
            WorkflowAPI api = new WorkflowAPI();


            Dictionary<string, object> entityFields = GetEntityControls();
            AttachmentEntity image = AttchmentItem("AsyncFileUpload2");


            if (image != null)
                entityFields.Add("fldImage", image);


            int entityId = 0;
            bool isSite = CheckIfEntityIsSite();
            if ((entityIdHidden != null) && (!string.IsNullOrEmpty(entityIdHidden.Value)))
            {
                int.TryParse(entityIdHidden.Value, out entityId);
            }
            api.UpdateACtivityFields(WorkflowInstanceId, user, this.GetFormUIViewModel().ActivityInstance, entityFields, entityId, "EntityType");


            List<DBParameter> prms = new List<DBParameter>();
            prms.Add(new DBParameter(System.Data.DbType.Int32, WorkflowInstanceId, "iwf"));
            prms.Add(new DBParameter(System.Data.DbType.Int32, entityId, "entityId"));
            int.TryParse(DBUtil.ExecuteScalar("USP_TEN_Entities_UpdateDynamicsValues", prms.ToArray(),
                CommandType.StoredProcedure).ToString(), out entityId);


            Dictionary<string, object> siteFields;
            if (isSite)
            {
                siteFields = GetSiteControls();
                siteFields.Add("fldParentid", entityId);
                api.UpdateACtivityFields(WorkflowInstanceId, user, this.GetFormUIViewModel().ActivityInstance, siteFields, entityId, "SiteDetails");
            }


            entityIdHidden.Value = entityId.ToString();
            this.CreateChildControls();


            //Response.Redirect(Request.RawUrl);
        }
        catch (Exception ex)
        {
            PNMsoft.Sequence.Diagnostics.DiagnosticUtility.EventLog.LogError(String.Format("TreeViewOrg.aspx:    btnSave_Click(), {0}", ex.Message));
        }
    }