我在点击按钮的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.可以任何人请帮我解决这个问题吗?
答案 0 :(得分:3)
我假设它的ASP.NET WebForms是我们在这里谈论的。
当您向网页动态添加控件时,您必须在每个连续回发时重新创建它们。原因是动态创建的控件不存在于.aspx文件中,也不存在于视图状态中,因此asp.net无法知道它必须重新创建这些控件。因此,您必须在初始化事件(页面加载之前)中重新创建它们,包括添加所需的任何事件处理程序。
你可以google about it。