Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > ASP.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.04.2015, 06:01   #1
sinestro
Пользователь
 
Регистрация: 24.02.2012
Сообщений: 88
Вопрос ASP.NET

есть у меня gridview, который я заполняю из БД mysql.
вот так выглядит пациент:
Код:
<asp:GridView ID="GridView1" runat="server" AutoGenerateDeleteButton="True" 
            AutoGenerateEditButton="True" AutoGenerateSelectButton="True" CellPadding="4" 
            ForeColor="#333333" GridLines="None" 
            OnSelectedIndexChanged="GridView1_SelectedIndexChanged" 
            OnRowDeleting="GridView1_RowDeleting" 
            OnRowCancelingEdit="GridView1_RowCancelingEdit" 
            OnRowEditing="GridView1_RowEditing" OnRowUpdating="GridView1_RowUpdating" 
            AutoGenerateColumns="False" DataKeyNames="id">
            <AlternatingRowStyle BackColor="White" />
            <Columns>
                <asp:TemplateField HeaderText="Name">
                    <EditItemTemplate>
                        <asp:TextBox ID="GroupName" runat="server" Text='<%# Eval("name") %>'></asp:TextBox>
                    </EditItemTemplate>
                    <ItemTemplate>
                        <asp:Label ID="Label2" runat="server" Text='<%# Eval("name") %>'></asp:Label>
                    </ItemTemplate>
                </asp:TemplateField>
            </Columns>
            <FooterStyle BackColor="#990000" Font-Bold="True" ForeColor="White" />
            <HeaderStyle BackColor="#990000" Font-Bold="True" ForeColor="White" />
            <PagerStyle BackColor="#FFCC66" ForeColor="#333333" HorizontalAlign="Center" />
            <RowStyle BackColor="#FFFBD6" ForeColor="#333333" />
            <SelectedRowStyle BackColor="#FFCC66" Font-Bold="True" ForeColor="Navy" />
            <SortedAscendingCellStyle BackColor="#FDF5AC" />
            <SortedAscendingHeaderStyle BackColor="#4D0000" />
            <SortedDescendingCellStyle BackColor="#FCF6C0" />
            <SortedDescendingHeaderStyle BackColor="#820000" />
        </asp:GridView>
пытаюсь его редактировать:
Код:
protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
        {
            int id = int.Parse(GridView1.DataKeys[e.RowIndex].Value.ToString());
            TextBox name = (TextBox)GridView1.Rows[e.RowIndex].FindControl("GroupName");  
            IUDquery("UPDATE `group` SET `name`='" + name.Text + "' WHERE `id`=" + id+"; COMMIT");
            GridView1.EditIndex = -1;
            gridfill(ref GridView1, "SELECT * FROM `group`");
        }
и происходят неведомые весчи: жму кнопку редактирования строки, ввожу новое значение, нажимаю кнопку "обновить" и в гридвью остаётся старое значение. причём странно то, что e.NewValue возвращает не новое(только что введённое значение), а старое. почему так ?

Последний раз редактировалось Stilet; 26.04.2015 в 08:08.
sinestro вне форума Ответить с цитированием
Старый 26.04.2015, 08:10   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

А в БД новое значение попадает?
тело gridfill как выглядит?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 26.04.2015, 16:11   #3
sinestro
Пользователь
 
Регистрация: 24.02.2012
Сообщений: 88
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
А в БД новое значение попадает?
тело gridfill как выглядит?
в бд новое значение попасть не сможет. я проверял алертом e.NewValues перед отправкой в базу, и значения там оставались старые.

gridfill :
Код:
private void gridfill(ref GridView gv, string query)
        {
            DataTable dt = new DataTable();
            using (MySqlConnection con = new MySqlConnection(connectionstring))
            {
                MySqlDataAdapter da = new MySqlDataAdapter();
                da.SelectCommand = new MySqlCommand(query,con);
                da.Fill(dt);
                gv.DataSource = dt;
                gv.DataBind(); 
            }  
        }
sinestro вне форума Ответить с цитированием
Старый 26.04.2015, 18:00   #4
Streletz
Старожил
 
Регистрация: 03.01.2014
Сообщений: 2,870
По умолчанию

Цитата:
Сообщение от sinestro Посмотреть сообщение
Код:
            IUDquery("UPDATE `group` SET `name`='" + name.Text + "' WHERE `id`=" + id+"; COMMIT");
и происходят неведомые весчи: жму кнопку редактирования строки, ввожу новое значение, нажимаю кнопку "обновить" и в гридвью остаётся старое значение. причём странно то, что e.NewValue возвращает не новое(только что введённое значение), а старое. почему так ?
Значит запрос который поступает на вход IUDquery по каким-то причинам не выполняется.
Наиболее вероятные причины:
  1. Не выполняется условие в запросе;
  2. Запрос вообще не отправляется в БД.
Смотрите код IUDquery. Проверяйте его работу отладчиком. Также было бы неплохо проверить сам запрос на предмет выполнимости условия в нём.
Streletz вне форума Ответить с цитированием
Старый 26.04.2015, 18:03   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Цитата:
в бд новое значение попасть не сможет.
Тогда чему удивляться? У тебя в базе ничего не обновляется, соответственно и грид не обновляет. Значит ошибка в IUDquery().
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 26.04.2015, 18:37   #6
sinestro
Пользователь
 
Регистрация: 24.02.2012
Сообщений: 88
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Тогда чему удивляться? У тебя в базе ничего не обновляется, соответственно и грид не обновляет. Значит ошибка в IUDquery().
не в нём. чтобы записать в базу новые значения, я должен их получить из gridview, а он мне выдаёт старые значения. поясню:
старое значение : "группа1"
нажимаю edit, ввожу новое значение:"группа2", жму update

и после такого
Код:
protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
        {
            TextBox tb = (TextBox)GridView1.Rows[e.RowIndex].FindControl("GroupName");  
            System.Web.HttpContext.Current.Response.Write(
                    "<SCRIPT LANGUAGE=\"JavaScript\">alert(\"" +  tb.Text  + "\")</SCRIPT>");
        }
алерт выводит мне "группа1", а должен "группа2"
sinestro вне форума Ответить с цитированием
Старый 26.04.2015, 19:07   #7
Streletz
Старожил
 
Регистрация: 03.01.2014
Сообщений: 2,870
По умолчанию

У контрола
Цитата:
Сообщение от sinestro Посмотреть сообщение
Код:
TextBox tb
AutoPostBack включен?
Streletz вне форума Ответить с цитированием
Старый 26.04.2015, 19:34   #8
sinestro
Пользователь
 
Регистрация: 24.02.2012
Сообщений: 88
По умолчанию

Цитата:
Сообщение от Streletz Посмотреть сообщение
У контрола
AutoPostBack включен?
выключен. включение ничего не изменило
sinestro вне форума Ответить с цитированием
Старый 26.04.2015, 21:31   #9
sinestro
Пользователь
 
Регистрация: 24.02.2012
Сообщений: 88
По умолчанию

проблема крылась здесь:
Код:
protected void Page_Load(object sender, EventArgs e)
        {
            gridfill(ref GridView1, "select * from `group`");
            gridfill(ref GridView2, "SELECT * FROM `student`"); 
        }
просто нужно было написать так:

Код:
protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                gridfill(ref GridView1, "select * from `group`");
                gridfill(ref GridView2, "SELECT * FROM `student`");
            }
        }
sinestro вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Удаленный SQL-сервер Ado.Net + .Net remoting + Asp .Net gammaray Базы данных (ADO.NET, LinqToSql, ORM Entity Framework, NHibernate) 2 22.11.2010 17:36
Вопрос к тем, кто имеет представление о PHP, JSP, ASP, ASP.NET child_of_july Помощь студентам 0 07.06.2008 00:25