Модераторы: gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Update в DetailsView, empty DetailsViewUpdateEventArgs 
:(
    Опции темы
Choose_Life
Дата 25.1.2007, 12:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 10.1.2007
Где: Москва

Репутация: нет
Всего: нет



есть следующая DetailsView:

Код

    <asp:DetailsView runat="server" ID="UserForm" 
        OnModeChanging="UserForm_ModeChanging" 
        OnItemUpdating="UserForm_ItemUpdating"
        DataKeyNames="Id">
        
        <Fields>        
            <asp:BoundField DataField="FullName" HeaderText="Имя"/>
            <asp:BoundField DataField="Login" HeaderText="Логин"/>
            <asp:BoundField DataField="Password" HeaderText="Пароль" />
            <asp:BoundField DataField="EMail" />                        
            <asp:CommandField ShowEditButton="true" ButtonType="Button"/>
        </Fields>        
    </asp:DetailsView>


и CodeBehind к ней:

Код

public partial class UserDetails : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            UserForm.DataSource = GetUserData();
            UserForm.DataBind();
        }
    }

    protected void UserForm_ModeChanging(object sender, DetailsViewModeEventArgs e)
    {
        UserForm = sender as DetailsView;
        UserForm.ChangeMode(e.NewMode);
        
        UserForm.DataSource = GetUserData();
        UserForm.DataBind();
    }

    protected void UserForm_ItemUpdating(object sender, DetailsViewUpdateEventArgs e)
    {
        User user = new User();
        user.Id = (int) e.NewValues["id"];
        user.Login = (string) e.NewValues["Login"];
        user.Password = (string)e.NewValues["Password"];
        
        /*saving user code.... */       

        UserForm.ChangeMode(DetailsViewMode.ReadOnly);

        UserForm.DataSource = GetUserData();
        UserForm.DataBind();

    }

    protected IList<User> GetUserData()
    { 
         .... 
    }

}



Ошибка возникает при попытке выполнения Update в методе UserForm_ItemUpdating во время обращения к полям e.NewValues. В них не содержится никаких значений. OldValues тоже пустые. Подскажите плиз, почему это происходит...

PM MAIL   Вверх
Choose_Life
Дата 25.1.2007, 13:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 10.1.2007
Где: Москва

Репутация: нет
Всего: нет



Если обновление данных проводить через ObjectDataSource, то такой проблемы не возникает. Почему же она появляется, если мне требуется использовать свой код работы с данными?
PM MAIL   Вверх
Choose_Life
Дата 25.1.2007, 14:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 10.1.2007
Где: Москва

Репутация: нет
Всего: нет



Собственно смысл проблемы стал понятен: DetailsView как и все контролы, позволяющие выполнять модификацию данных, заполняют значениями NewValues и OldValues только в том случае, если они привязаны к конкретному источнику данных. 

Если же привязка к данным происходит в коде, то этот прием уже не работает, так что для получения значений поля данных придется обращаться к DetailsView по номеру столбца и ячейки, в котором оно находится на форме
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Любитель
Mymik
mr.DUDA

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Любитель, Mymik, mr.DUDA.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Разработка под ASP.NET | Следующая тема »


 




[ Время генерации скрипта: 0.0411 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.