Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.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 在显示旧值的动态添加的用户控件之间切换_Asp.net - Fatal编程技术网

Asp.net 在显示旧值的动态添加的用户控件之间切换

Asp.net 在显示旧值的动态添加的用户控件之间切换,asp.net,Asp.net,编辑(更简短): 我有一个控件“配置”,左边是树状视图,右边是我添加控件的面板列表。这些元素被放置在一个表中,并由一个ajax面板包围 假设我有一个包含两个元素car1和car2的树节点cars。当我单击一个项目时,我将所选树节点的ID和类型保存在隐藏字段中,以便能够在页面_Init上加载正确的用户控件 protected void Page_Init(object sender, EventArgs e) { var type = this.Request.Form["

编辑(更简短):

我有一个控件“配置”,左边是树状视图,右边是我添加控件的面板列表。这些元素被放置在一个表中,并由一个ajax面板包围

假设我有一个包含两个元素car1和car2的树节点cars。当我单击一个项目时,我将所选树节点的ID和类型保存在隐藏字段中,以便能够在页面_Init上加载正确的用户控件

protected void Page_Init(object sender, EventArgs e)
    {
        var type = this.Request.Form["ctl00$MainContent$ctl00$typeId"];
        var id = this.Request.Form["ctl00$MainContent$ctl00$entityId"];
        if (!string.IsNullOrEmpty(type) && !string.IsNullOrEmpty(id))
        {
            this.LoadUserControl(type, id);
        }
    }

 private void LoadUserControl(string type, string id)
    {
        if (Convert.ToInt32(type) != 0)
        {
            switch (Convert.ToInt32(type))
            {
                case (int)SkTopics.Product:
                    this.AddUserControl("../Modules/Product.ascx", this.Product, type, id);
                    break;
            }
        }
    }

private void AddUserControl(string controlName, Panel panel, string type, string id)
    {       
        // Init new user cotntrol
        control = (BaseControl)this.LoadControl(controlName);
        control.LoadEntityItem(Convert.ToInt32(id));

        // Setting the user control ID
        var replace = controlName.Replace("../Modules/", string.Empty);
        string userControlId = replace.Split('.')[0] + id;
        var targetControl = panel.FindControl(userControlId);

        if (object.Equals(targetControl, null))
        {
            control.ID = userControlId;
            control.DataBind();
            panel.Controls.Add(control);
        }
    }
On LoadEntityItem此车的数据从数据库中收集,值设置为文本框的文本。当我现在切换到第二辆车时,会显示新的值

问题:我更改文本框中的值,然后按save按钮调用用户控件的save方法。从现在起,当我再次切换到car 1时,car 2的值仍然显示,尽管car1的数据已填充。要查看car1的数据,我必须切换到完全不同的控制类型,然后返回到car1

另一个问题是,我在用户控件中有一个二进制图像,我在init中填充了该图像的数据。当我切换到下一辆车时,没有配置图像,我将图像数据设置为null,但显示的是前一辆车的图像。Onyl如果设置了不同的图像数据,则会显示新图像

我还注意到了一件事: 在用户控件内部,我调用了一个javascript函数,但这个函数只在单击save按钮时调用。树节点的切换和保存按钮点击之间似乎有不同

ScriptManager.RegisterStartupScript(this, this.GetType(), "InitScrewPointsForDragging", "InitScrewPointsForDragging();", true);

我希望这比以前更简短。

问题的原因似乎是一些不正确的viewstate处理,在我禁用viewstate后,它在我这边正常工作。以下是我为使其在我身边工作而更新的代码: this.control.EnableViewState=false;
this.control.ID=userControlId

我更新了我的问题,我希望它现在更清楚了。如果没有,请告诉我,我会再试一次