从用户控件保存值

时间:2018-07-11 16:10:05

标签: c# aspx-user-control

我有一个aspx页面。在pageLoad上,调用一个加载用户控件的方法

protected void Page_Load(object sender, EventArgs e)
{
    LoadUC();
}

这会将通过几个通用值的用户控件加载到页面上(到占位符中)。

private void LoadUC()
{
    ucTS ctrl = (ucTS)Page.LoadControl(_ucTSPath);
    ctrl.ParentId = 0;
    ctrl.addNew = false;
    phFG.Controls.Add(ctrl);
}

用户控件(包含转发器)将在初始页面上加载初始占位符以及另一个占位符:

protected void Page_Load(object sender, EventArgs e)
{
    LoadItems();
}

private void LoadBOMItems()
{
    List<Item> dtItem;

    if (ParentId == 0)
    {
        if (ViewState["ItemFG"] == null)
        {
            dtItem = //Gets list of items
        }
        else
        {
            dtItem = (List<Item>)ViewState["ItemFG"];
        }
        ViewState["ItemFG"] = dtItem;
    }
    else
    {
        if (ViewState["Items" + ParentId] == null)
        {
            dtItem = //get list of items
        }
        else
        {
            dtItem = (List<Item>)ViewState["Items" + ParentId];
        }
        ViewState["Items" + ParentId] = dtItem;
    }

    if (dtItem.Count > 0)

        rptTSItem.DataSource = dtItem;
        rptTSItem.DataBind();              
    }
}

在绑定中,我绑定了转发器,但我还要添加更多相同的用户控件。

当我单击将新项目添加到转发器时,问题就来了。初始单击,一切都保存良好,并添加了新行。在初始页上找不到用户控件的第二次单击,因此不会触发save方法。第三次单击,一切正常,第四次,未找到用户控件。这一直在发生。为什么不能总是找到我的用户控件?我曾尝试在多个地方进行回发检查,但这似乎不起作用。

1 个答案:

答案 0 :(得分:0)

我仍然不确定100%为什么每隔其他时间该事件就会正确触发,而不是第一次触发,但是解决方案只是在用户控件中添加一个ID。

private void LoadUC()
{
ucTS ctrl = (ucTS)Page.LoadControl(_ucTSPath);
ctrl.ParentId = 0;
ctrl.addNew = false;
ctrl.ID = "someID"
phFG.Controls.Add(ctrl);
}

,每当我从用户控件中重新添加用户控件时,我都会传递相同的ID。