0

我在按钮上单击动态TextBox添加placeholder

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

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。任何人都可以帮我解决这个问题..?

4

1 回答 1

3

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

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

你可以google一下

于 2013-05-27T05:57:50.220 回答