Как обновить значение текстового поля в asp.net с помощью с #?

У меня есть эта программа в asp.net с использованием C # .aspx

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div id="first" runat="server">
        Text Boxes
        <asp:TextBox ID="txtnr" runat="server"></asp:TextBox><br />
        <asp:Button ID="btnxt1" runat="server" Text="Next" onclick="btnxt1_Click"/><br />
    </div>
    <div id="second" runat="server">
        <asp:Table ID="tbl" runat="server"></asp:Table>
        <asp:Button ID="btnx2" runat="server" Text="Next" onclick="btnx2_Click"/><br />
    </div>

    <div id="third" runat="server">
        <asp:Label ID="lblxx" runat="server" Text=""></asp:Label><br />
    </div>
    </form>
</body>
</html>

.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class _Default : System.Web.UI.Page
{

    static int numr = 0;
    static TableHeaderCell[] tc2;
    static TextBox[] txtb;
    protected void Page_Load(object sender, EventArgs e){}

    protected void btnxt1_Click(object sender, EventArgs e)
    {
        numr = int.Parse(txtnr.Text);
        TableHeaderRow tr;
        tc2 = new TableHeaderCell[numr];
        txtb = new TextBox[numr];
        for (int i = 0; i < numr; i++)
        {
            tr = new TableHeaderRow();
            tc2[i] = new TableHeaderCell();
            txtb[i] = new TextBox();
            txtb[i].Text = "w";
            tc2[i].Controls.Add(txtb[i]);
            tr.Controls.Add(tc2[i]);
            tbl.Controls.Add(tr);
        }
    }

    protected void btnx2_Click(object sender, EventArgs e)
    {
        for (int i = 0; i < numr; i++)
            lblxx.Text += txtb[i].Text+"<br/>";
    }
}

Шаги программы:

  • введите количество отображаемых текстовых полей (скажем, = 4) и нажмите «Далее»
  • Появятся четыре текстовых поля (программа устанавливает значение textbox = "w", чтобы понять проблему)
  • пользователь может установить другое значение для текста для четырех текстовых полей (скажем: 1, 2, 3, 4), а затем нажать «Далее»
  • наконец, программа печатает значения текстовых полей, но проблема в том, что программа напечатает: wwww not "1234" :( ??

Как исправить эту проблему ??


person Waleed Al-Manthari    schedule 04.04.2014    source источник
comment
где в вашем коде находятся 4 текстовых поля, в которые пользователь может вводить текст?   -  person jomsk1e    schedule 05.04.2014
comment
Я привожу это в качестве примера, пользователь выбирает количество текстовых полей на первом шаге и сохраняет его в переменной numr   -  person Waleed Al-Manthari    schedule 05.04.2014


Ответы (1)


Проблема связана с тем, что динамические элементы управления (например, ваши) не поддерживают автоматически свое состояние после обратной публикации, и вы должны справиться с этим самостоятельно.

Для ответа на очень похожий вопрос перейдите по этой ссылке, а затем эту ссылку для соответствующего решения.

person Morix Dev    schedule 05.04.2014
comment
@ WaleedAl-Manthari: пожалуйста, примите мой ответ за то, что он дал мне репутацию! Спасибо. - person Morix Dev; 05.04.2014