按钮单击时自动从PlaceHolder中删除动态控件

时间:2013-05-27 05:18:08

标签: c# placeholder dynamic-controls

我在点击按钮的TextBox中添加动态placeholder

当加载所有文本框时,我正在对值进行更改,然后再次按另一个按钮将值保存到SharePoint List。但是当我按下Save按钮并通过调试检查占位符时,我发现占位符中没有任何控件。
我正在添加如下控件:

TextBox[] tb = new TextBox[item_ans.Count];
Literal[] lt = new Literal[item_ans.Count];
for (int j = 0; j < item_ans.Count; j++)
{
   ans_id.Add(item_ans[j]["ID"].ToString());
   tb[j] = new TextBox();
   tb[j].ID = "tb_ans" + (j + 1).ToString();
   tb[j].Text = item_ans[j]["Title"].ToString();
   lt[j] = new Literal();
   lt[j].Text = "<br/>";
   pl_hd_ans.Controls.Add(tb[j]);
   pl_hd_ans.Controls.Add(lt[j]);
}

在“保存”按钮上单击“我正在检索那些文本框”,如下所示:

int n = Convert.ToInt32(ViewState["totalAns"].ToString());

foreach (var i in ans_id)
{
    var item_ans = list_ans.GetItemById(i);
    clientContext.Load(item_ans);
    clientContext.ExecuteQuery();

    for (int k = 0; k < n; k++)
    {
       TextBox tb = (TextBox)pl_hd_ans.FindControl("tb_ans" + (k + 1).ToString());
       item_ans["Title"] = tb.Text;
       item_ans.Update();
       clientContext.Load(item_ans);
       clientContext.ExecuteQuery();
    }                
}

但是在这里,我检查占位符的控件是0.可以任何人请帮我解决这个问题吗?

1 个答案:

答案 0 :(得分:3)

我假设它的ASP.NET WebForms是我们在这里谈论的。

当您向网页动态添加控件时,您必须在每个连续回发时重新创建它们。原因是动态创建的控件不存在于.aspx文件中,也不存在于视图状态中,因此asp.net无法知道它必须重新创建这些控件。因此,您必须在初始化事件(页面加载之前)中重新创建它们,包括添加所需的任何事件处理程序。

你可以google about it