我有一个 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();
}
}
在绑定中,我绑定了转发器,但我也添加了更多相同的用户控件。
当我单击向转发器添加新项目时,问题就来了。最初的点击,一切都很好,并添加了一个新行。在初始页面上找不到第二次单击用户控件,因此不会触发保存方法。第三次点击,一切正常,第四次,没有找到用户控件。这种情况不断发生。为什么总是找不到我的用户控件?我曾尝试在多个地方进行回发检查,但这似乎不起作用。