Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Программное создание и модификация DataTable / 3 сообщений из 3, страница 1 из 1
08.06.2006, 15:14
    #33780871
Ricco++
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Программное создание и модификация DataTable
Доброго времени суток!
У меня в возникли проблемы с программным добавлением данных в DataTable, подскажите плз в чем дело!
Создаю DataSet и DataTable, заполняю их начальными данными:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
public partial class _Default : System.Web.UI.Page
{
    DataSet ds = new DataSet();
    DataTable dt;
    DataColumn dc;
    protected void Page_Load(object sender, EventArgs e)
    {
        dt = ds.Tables.Add("Candidate");
        dc=dt.Columns.Add("CandidateID",typeof(Int32));
        dc = dt.Columns.Add("CandidateName", typeof(String));
        DataRow dr = ds.Tables["Candidate"].NewRow();
        dr["CandidateID"] =  1 ;
        dr["CandidateName"] = "Петя";
        ds.Tables["Candidate"].Rows.Add(dr);
        dr = ds.Tables["Candidate"].NewRow();
        dr["CandidateID"] =  2 ;
        dr["CandidateName"] = "Вася";
        ds.Tables["Candidate"].Rows.Add(dr);
        GridView1.DataSource = ds;
        GridView1.DataBind();
        GridView1.HeaderRow.Cells[ 0 ].Text = "Номер кандидата";
        GridView1.HeaderRow.Cells[ 1 ].Text = "Имя кандидата";
    }
Пока все нормально. Теперь создаю на форме два текстовых поля и кнопочку. При нажатии на кнопочку данные из текстовых полей должны добавляться в DataTable:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
    protected void Button1_Click(object sender, EventArgs e)
    {
        DataRow dr = ds.Tables["Candidate"].NewRow();
        dr["CandidateName"] = TextBox1.Text;
        dr["CandidateID"]=Convert.ToInt32(TextBox2.Text);
        ds.Tables["Candidate"].Rows.Add(dr);
        GridView1.DataBind();
     }
}
Когда нажимаю кнопочку первый раз, появляется новая строка, все в порядке. Но когда пытаюсь добавить еще строки, нажимая на ту же кнопочку, последняя (добавленная до этого) строка перезаписывается новыми данными, введенными в поля ввода!!! В чем особенность использования такого подхода в ASP.NET? Аналогичный код в WindowsForms работает отлично!
И еще, как обновлять данные в GridView. У меня получилось только с помощью DataBind! Может есть другой способ?
Спасибо!
...
Рейтинг: 0 / 0
08.06.2006, 17:10
    #33781359
Axeleron
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Программное создание и модификация DataTable
Проблема в том, что ваша DataTable при каждой перезагрузке страницы пересоздаётся заново, теряя тем самым введённый до этого значения. Создавать таблицу надо один раз, а саму таблицу затем хранить в ViewState, например. В последующий раз, когда будете добавлять новую строку в таблицу останется проверить, есть ли в ViewState эта таблица. Если нет, создать, если уже есть, использовать её для добавления новой строки. Затем снова помещать таблицу в ViewState.
...
Рейтинг: 0 / 0
08.06.2006, 17:12
    #33781371
hDrummer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Программное создание и модификация DataTable
Нюансы ASP.Net, что называется.
...
Рейтинг: 0 / 0
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Программное создание и модификация DataTable / 3 сообщений из 3, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]