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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> ObjectDataSource не работает метод удаления 
:(
    Опции темы
phant
Дата 13.6.2012, 18:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 13.5.2011

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



Доброе время суток!
Начал изучать технологию ASP.NET и вот решил создавать приложение с использованием промежуточного слоя BLL
Беда в том, что все методы работают кроме Delete:
1) передаю параметром весь объект класса, то в метод он приходит с значениями null или 0 (в зависимости от типа);
2) пробовал и передавать только id (записывал и DataKeyNames и <Parameters></Parameters>), но толку мало...выдает ошибку, что метод не найден
пробовал задавать параметр через событие GridView1_RowDeleting - тоже ничего
Уже второй день копаюсь и понять не могу( подскажите, пожалуйста, где я натупил и как оно должно быть правильно.

вот мой код:
метод для удаления
Код
 [DataObjectMethod(DataObjectMethodType.Delete)]
        public void DeleteUs er(User toDelete)
        {            
            DataContext db = new DataContext(GetConnection());
            Table<User> Users = db.GetTable<User>();
            User delete_user = Users.Where(u => u.UserId == toDelete.UserId).First();               
            Users.DeleteOnSubmit(delete_user);
            db.SubmitChanges();                       
        }

код соответственно формы .aspx
Код
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="TestApp.WebForm1" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<ht ml xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <fo rm id="form1" runat="server">
<div>

    </div>
    <asp:ObjectDataSource ID="ObjectDataSource1" runat="server" 
        DataObjectTypeName="TestApp.ClasesDataSource.User" 
        DeleteMethod="DeleteUser" InsertMethod="InsertUser" 
        SelectMethod="SelectUsers" 
        TypeName="TestApp.ClasesDataSource.UsersObjectDataSource" 
        UpdateMethod="UpdateUser">
    </asp:ObjectDataSource>
    <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 
        DataSourceID="ObjectDataSource1">
        <Columns>
            <asp:CommandField ShowDeleteButton="True" />
            <asp:BoundField DataField="UserId" HeaderText="UserId" 
                SortExpression="UserId" ReadOnly="True" />
            <asp:BoundField DataField="Name" HeaderText="Name" SortExpression="Name" />
            <asp:BoundField DataField="Login" HeaderText="Login" SortExpression="Login" />
            <asp:BoundField DataField="Password" HeaderText="Password" 
                SortExpression="Password" />
            <asp:BoundField DataField="Email" HeaderText="Email" SortExpression="Email" />
            <asp:BoundField DataField="Phone" HeaderText="Phone" SortExpression="Phone" />
        </Columns>
    </asp:GridView>
    </form>
</body>
</html>


ну, вот еще весь класс бизнес-слоя:
Код
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Configuration;
using System.Data.Linq.Mapping;
using System.Data.Linq;
using System.ComponentModel;
using System.Data.SqlClient;
using System.Data;
//using System.Data.Linq.Provider;


namespace TestApp.ClasesDataSource
{
    [Table(Name = "Users")]
    public class User
    {
        [Column(AutoSync = AutoSync.OnInsert, IsPrimaryKey = true, IsDbGenerated = true, CanBeNull = false)]
        public int UserId { get; set; }
        [Column]
        public string Name { get; set; }
        [Column]
        public string Login { get; set; }
        [Column]
        public string Password { get; set; }
        [Column]
        public string Email { get; set; }
        [Column]
        public string Phone { get; set; }
    }

    public class UsersObjectDataSource
    {
        private static List<User> users_list;

        public string GetConnection()
        {
            return ConfigurationManager.ConnectionStrings["TestDBConnectionString1"].ConnectionString;
        }

        public List<User> SelectUsers()
        {
            
            DataContext db = new DataContext(GetConnection());
            Table<User> Users = db.GetTable<User>();

            users_list = new List<User>();
            string all = string.Empty;

            var sample = from u in Users select u;
            foreach (var user in sample)
            {                
               users_list.Add(new User { UserId = user.UserId, Name = user.Name, Login = user.Login, Password = user.Password, Email = user.Email, Phone = user.Phone });
            }
            return users_list;            

        }

        public void UpdateUs er(User toUpdate)
        {
            DataContext db = new DataContext(GetConnection());
            Table<User> Users = db.GetTable<User>();
            var update_user = Users.Where(u => u.UserId == toUpdate.UserId).SingleOrDefault();
            if (update_user != null)
            {
                update_user.Name = toUpdate.Name;
                update_user.Login = toUpdate.Login;
                update_user.Password = toUpdate.Password;
                update_user.Email = toUpdate.Email;
                update_user.Phone = toUpdate.Phone;
                db.SubmitChanges();
            }
        }

        public void InsertUs er(User toInsert)
        {
            DataContext db = new DataContext(GetConnection());
            Table<User> Users = db.GetTable<User>();
            User new_user = new Us er();
            new_user.Name = toInsert.Name;
            new_user.Login = toInsert.Login;
            new_user.Password = toInsert.Password;
            new_user.Email = toInsert.Email;
            new_user.Phone = toInsert.Phone;
            Users.InsertOnSubmit(toInsert);
            db.SubmitChanges();                       
        }
        
        [DataObjectMethod(DataObjectMethodType.Delete)]
        public void DeleteUs er(User toDelete)
        {            
            DataContext db = new DataContext(GetConnection());
            Table<User> Users = db.GetTable<User>();
            User delete_user = Users.Where(u => u.UserId == toDelete.UserId).First();               
            Users.DeleteOnSubmit(delete_user);
            db.SubmitChanges();                       
        }      

    }
}


Заранее спасибо!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Любитель
Mymik
mr.DUDA

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

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

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


 




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


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

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