Вызовите переменную add для GridView в UpdatePanel, чтобы каждый раз заново создавать страницу - PullRequest
0 голосов
/ 19 ноября 2011

У меня есть код на моей странице:

    public partial class Utworz : System.Web.UI.Page
{
    private List<Codes> Codes;
    protected void Page_Load(object sender, EventArgs e)
    {
        this.GridView1.DataSource = Codes;
        Codes = new List<Codes>();
    }

    protected void btn_AddKodManually_Click(object sender, EventArgs e)
    {
        Codes.Add(new Codes(code: this.TextBox1.Text, codeType: this.DropDownList1.SelectedValue));
        this.GridView1.DataBind();
    }
}

Моя страница содержит UpdatePanel, в которой у меня есть форма. Я печатаю данные в этой форме и добавляю их в GridView. и проблема в том, что каждый раз, когда я вызываю метод Click, моя страница создавалась как новая, а также моя переменная Code. Почему эта переменная не сохраняет свое состояние?

1 Ответ

1 голос
/ 19 ноября 2011

Проблема № 1: Переменная Codes устанавливается для нового объекта каждый раз при загрузке страницы.В нем никогда не будет более одного кода.

Проблема № 2: Здесь нет ничего, что могло бы содержать значение списка кодов от просмотра страниц до просмотра страниц.Вам нужно как-то хранить его и извлекать каждый раз, когда вы захотите выполнить повторную привязку.Например, создайте свойство с именем Codes и сохраните значение в viewstate.После добавления нового кода перепривязайте сетку.

Я понимаю, что вы можете ожидать, что сетка сохранит свое состояние, но вы каждый раз привязываете новый объект.Здесь может кто-то другой, но вы можете восстановить объект Codes, вызвав:

Codes = this.GridView1.Datasource

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...