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]);
}

そして、[保存] ボタンをクリックして、次のように TextBoxes を取得しています。

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 であると想定しています。

Web ページにコントロールを動的に追加する場合は、順次ポストバックするたびにコントロールを再作成する必要があります。これは、動的に作成されたコントロールが .aspx ファイルにもビューステートにも存在しないため、asp.net がこれらのコントロールを再作成する必要があることを認識できないためです。したがって、必要なイベント ハンドラーを追加するなど、初期化イベント (ページ読み込みの前) でそれらを再作成する必要があります。

あなたはそれについてググることができます。

于 2013-05-27T05:57:50.220 に答える