Как получить все текстовое поле из заполнителя?asp.net c # webform - PullRequest
0 голосов
/ 06 февраля 2019

У меня есть заполнитель asp: в моем html, и я получаю к нему доступ, чтобы добавлять текстовые поля и метки для вопросов и ответов.

"Форма" создана правильно. Я получил все метки с вопросами.и текстовое поле для каждого ответа, однако, когда я пытаюсь после нажатия кнопки runatserver, Placeholder1 всегда пуст.

Я много чего пытался получить значения текстового поля для вставки в базу данных без удачи.

Ниже моего кода.

Спасибо за вашу помощь заранее.

HTML-код для формы внутри веб-формы:

/* form for the buttons and title*/

<form id="form2" runat="server">

    <div align="center">
    </div>
    <div>
        <div align="center" class="form-group">
            <h4>
                <asp:label runat="server" id="title"></asp:label>
            </h4>
            <br />
            <br />
            <div align="center">
                place holder for the questions&answers

                    <asp:placeholder id="Placeholder1" runat="server">
                    </asp:placeholder>
            </div>
        </div>
    </div>
    <br />
    <br />

C # код для получениясколько вопросов, а затем добавить текстовое поле для каждого ответа, используя цикл с счетчиком, чтобы добавить идентификатор + счетчик

/* c# a counter is made to increment a number to the id*/

Adding controls to the PlaceHolder1     
/* add controls: */

добавить метки внутри счетчика для всего числа строк sqlresult * /

Ярлыки

Label quest= new Label();
quest.ID = "quest" + counter;
quest.Attributes.Remove("class");
quest.Attributes.Add("class", "exampleFormControlInput1");

quest.text = "sql query";

Текстовое поле / добавить текстовое поле на блок /

TextBox answer = new TextBox();
answer .ID = "answer " + counter;
answer .Attributes.Remove("class");
answer .Attributes.Add("class", "form-control");

PlaceHolder1.Controls.Add(quest);
PlaceHolder1.Controls.Add(new LiteralControl("<br>"));
PlaceHolder1.Controls.Add(answer);
PlaceHolder1.Controls.Add(new LiteralControl("<br>"));

Проверить, сколько элементов управления находится внутри PlaceHolder1

Попытка проверить, сколько элементов управления вPlaceHolder1

count = PlaceHolder1.Controls.Count;

всегда 0

1 Ответ

0 голосов
/ 06 февраля 2019

Возможно, вы не воссоздаете элементы управления в PostBack.Смотрите этот рабочий пример.

protected void Page_Load(object sender, EventArgs e)
{
    if (IsPostBack == false)
    {
        //do not create controls here
    }

    for (int count = 0; count < 5; count++)
    {
        TextBox answer = new TextBox();
        answer.ID = "answer " + count;
        PlaceHolder1.Controls.Add(answer);
    }
}

А затем на PostBack

protected void Button1_Click(object sender, EventArgs e)
{
    int count = PlaceHolder1.Controls.Count;

    for (int i = 0; i < count; i++)
    {
        TextBox answer = PlaceHolder1.FindControl("answer " + i) as TextBox;
        Label1.Text += answer.Text + "<br>";
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...