Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / GridView WebForms / 20 сообщений из 20, страница 1 из 1
26.10.2015, 12:39
    #39086693
waszkiewicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
GridView WebForms
Код: c#
1.
2.
3.
4.
5.
6.
 protected void gvTrolleys_RowDeleting(object sender, GridViewDeleteEventArgs e)
        {
            object o = gvTrolleys.DataKeys[e.RowIndex].Value;
            dal.DeleteTrolley(e.Keys[0]);
            
        }


вот такой код смело присваивает о нужное значение и ругается на Keys[0] - и в самом деле, в коллекции 0 элементов
С чего бы?
...
Рейтинг: 0 / 0
26.10.2015, 12:58
    #39086729
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
GridView WebForms
waszkiewicz
Код: c#
1.
2.
3.
4.
5.
6.
 protected void gvTrolleys_RowDeleting(object sender, GridViewDeleteEventArgs e)
        {
            object o = gvTrolleys.DataKeys[e.RowIndex].Value;
            dal.DeleteTrolley(e.Keys[0]);
            
        }


вот такой код смело присваивает о нужное значение и ругается на Keys[0] - и в самом деле, в коллекции 0 элементов
С чего бы?Наверное с того, что Вы не указали DataKeyNames , или указали ошибочно.
...
Рейтинг: 0 / 0
26.10.2015, 13:12
    #39086761
waszkiewicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
GridView WebForms
Если неверно задать DataKeyNames - в DataBinding будет орать, что поля нет. Так что не в этом по-ходу дело
...
Рейтинг: 0 / 0
26.10.2015, 13:43
    #39086808
Axeleron
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
GridView WebForms
waszkiewicz,
Так вот это gvTrolleys.DataKeys[e.RowIndex].Value и возвращает ключ в гриде. Что еще требуется?
...
Рейтинг: 0 / 0
26.10.2015, 13:59
    #39086832
monstrU
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
GridView WebForms
waszkiewicz
Код: c#
1.
2.
3.
4.
5.
6.
 protected void gvTrolleys_RowDeleting(object sender, GridViewDeleteEventArgs e)
        {
            object o = gvTrolleys.DataKeys[e.RowIndex].Value;
            dal.DeleteTrolley(e.Keys[0]);
            
        }


вот такой код смело присваивает о нужное значение и ругается на Keys[0] - и в самом деле, в коллекции 0 элементов
С чего бы?

по моему в этом событии коллекция gvTrolleys.DataKeys недоступна. значение нужного ключа нужно получать из параметра GridViewDeleteEventArgs e
...
Рейтинг: 0 / 0
26.10.2015, 14:11
    #39086849
waszkiewicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
GridView WebForms
Axeleron,
зачем тогда e.Keys[0]
я всегда его пользовал - а тут засада какая-то
...
Рейтинг: 0 / 0
26.10.2015, 14:13
    #39086854
waszkiewicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
GridView WebForms
monstrU,
так в этом и вопрос - нету там ничего (в e)
...
Рейтинг: 0 / 0
26.10.2015, 15:47
    #39087043
monstrU
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
GridView WebForms
waszkiewiczmonstrU,
так в этом и вопрос - нету там ничего (в e)
так тогда не событие RowDeleting надо использовать - нет? в помощи что написано по поводу этого события ?
и сперва делаешь
object o = gvTrolleys.DataKeys[e.RowIndex].Value;
а потом
dal.DeleteTrolley(e.Keys[0]);
зачем ??
где используешь object o ?
...
Рейтинг: 0 / 0
26.10.2015, 16:11
    #39087099
waszkiewicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
GridView WebForms
monstrU,

да нигде не использую - просто проверял, что ключи действительно есть
...
Рейтинг: 0 / 0
26.10.2015, 16:19
    #39087107
Axeleron
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
GridView WebForms
waszkiewiczmonstrU,

да нигде не использую - просто проверял, что ключи действительно есть
Какие ключи? Зачем они могут понадобиться в данном конкретном примере?
...
Рейтинг: 0 / 0
26.10.2015, 16:20
    #39087109
waszkiewicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
GridView WebForms
Axeleron,
как зачем? Удалить запись с id
Так же и обновляю
...
Рейтинг: 0 / 0
26.10.2015, 16:31
    #39087123
Axeleron
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
GridView WebForms
waszkiewicz,
Код: c#
1.
var id = Convert.ToInt32(gvTrolleys.DataKeys[e.RowIndex].Value);


Разве не так?
...
Рейтинг: 0 / 0
26.10.2015, 16:38
    #39087136
waszkiewicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
GridView WebForms
object -то чем не угодил?
...
Рейтинг: 0 / 0
26.10.2015, 16:39
    #39087138
waszkiewicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
GridView WebForms
AddWithValue с ним работает прекрасно
...
Рейтинг: 0 / 0
26.10.2015, 16:43
    #39087150
Axeleron
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
GridView WebForms
waszkiewiczobject -то чем не угодил?
Хочется с объектом работать, на здоровье. Я о том лишь как получить ID, при условии, что в декларации грида указан DataKeyNames="id", где id указывает на поле DataField с ID.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
 <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false" DataKeyNames="id"
         OnRowDeleting="GridView1_RowDeleting" AutoGenerateDeleteButton="true">
        <Columns>
            <asp:BoundField HeaderText="ID" DataField="id" />
            <asp:BoundField HeaderText="Name" DataField="name" />
            <asp:BoundField HeaderText="Age" DataField="age" />
        </Columns>
    </asp:GridView>



Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
 
protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
    {
        int id = (int)GridView1.DataKeys[e.RowIndex].Value;
        string CS = @"Data Source=COMPAQ-PC\SQLEXPRESS;Initial Catalog=DbStudents;Integrated Security=true";
        SqlConnection con = new SqlConnection(CS);
        SqlCommand cmd = new SqlCommand("delete tbl_students where id=" + id, con);
        con.Open();
        cmd.ExecuteNonQuery();
        con.Close();
        BindGridview();
    }
...
Рейтинг: 0 / 0
26.10.2015, 16:50
    #39087160
waszkiewicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
GridView WebForms
вот чудак-человек Я ж написал, что
Код: c#
1.
dal.DeleteTrolley(gvTrolleys.DataKeys[e.RowIndex].Value);


прекрасное работает, но это черезжопие, потому что E.Keys[0] как минимум понятнее
Хотите парсить в int - дело ваше, однако там и так int лежит
И вот такая вот штуковина
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
  public int DeleteTrolley(object id)
        {
            int i = -1;
            try
            {
                using(SqlConnection connection=new SqlConnection(connectionString))
                {
                    connection.Open();
                    SqlCommand command = connection.CreateCommand();
                    command.CommandType = CommandType.Text;
                    command.CommandText = @"update proc_packs set rtype=55 where id=@id";
                    command.ExecuteNonQuery();
                }
            }
            catch (SqlException e)
            {
            }
            return i;
        }


прекрасно обходится без парсинга
...
Рейтинг: 0 / 0
26.10.2015, 16:52
    #39087164
waszkiewicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
GridView WebForms
Axeleronwaszkiewiczobject -то чем не угодил?
Хочется с объектом работать, на здоровье. Я о том лишь как получить ID, при условии, что в декларации грида указан DataKeyNames="id", где id указывает на поле DataField с ID.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
 <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false" DataKeyNames="id"
         OnRowDeleting="GridView1_RowDeleting" AutoGenerateDeleteButton="true">
        <Columns>
            <asp:BoundField HeaderText="ID" DataField="id" />
            <asp:BoundField HeaderText="Name" DataField="name" />
            <asp:BoundField HeaderText="Age" DataField="age" />
        </Columns>
    </asp:GridView>



Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
 
protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
    {
        int id = (int)GridView1.DataKeys[e.RowIndex].Value;
        string CS = @"Data Source=COMPAQ-PC\SQLEXPRESS;Initial Catalog=DbStudents;Integrated Security=true";
        SqlConnection con = new SqlConnection(CS);
        SqlCommand cmd = new SqlCommand("delete tbl_students where id=" + id, con);
        con.Open();
        cmd.ExecuteNonQuery();
        con.Close();
        BindGridview();
    }


параметры использовать религия не позволяет?
...
Рейтинг: 0 / 0
26.10.2015, 16:58
    #39087176
Axeleron
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
GridView WebForms
waszkiewicz,
Но пока что чудишь ты. Я тебе просто предложил правильный работающий вариант.
Если нравится вариант использования E.Keys[0], пользуй на здоровье. За 10 лет писания на вэб формах я такой конструкции нигде никогда не видел.


waszkiewiczИ вот такая вот штуковина
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
  public int DeleteTrolley(object id)
        {
            int i = -1;
            try
            {
                using(SqlConnection connection=new SqlConnection(connectionString))
                {
                    connection.Open();
                    SqlCommand command = connection.CreateCommand();
                    command.CommandType = CommandType.Text;
                    command.CommandText = @"update proc_packs set rtype=55 where id=@id";
                    command.ExecuteNonQuery();
                }
            }
            catch (SqlException e)
            {
            }
            return i;
        }



прекрасно обходится без парсинга

Сомнительно, что этот код работает - с парсингом или без. Это можно понять и без хрустального шара. Или это очередной выдранный откуда-то 'огрызок' кода и мы должны снова гадать, что ты имел в виду?
...
Рейтинг: 0 / 0
26.10.2015, 17:03
    #39087186
waszkiewicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
GridView WebForms
Axeleron,
command.Parameters.AddWithValue("@id", id);
а еже охота парсингом махать - махайте, тем более что в
Код: c#
1.
SqlCommand cmd = new SqlCommand("delete tbl_students where id=" + id, con);


по другому и не сделаешь.
...
Рейтинг: 0 / 0
26.10.2015, 17:07
    #39087192
Axeleron
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
GridView WebForms
waszkiewiczcommand.Parameters.AddWithValue("@id", id);
Я же сказал, что огрызок кода снова предоставлен был выше )

waszkiewiczа еже охота парсингом махать - махайте, тем более что в
Код: c#
1.
SqlCommand cmd = new SqlCommand("delete tbl_students where id=" + id, con);



по другому и не сделаешь.
Сейчас таким способом запускать команды уже мало кто пользуется. Вчерашний, если не позавчерашний день.
...
Рейтинг: 0 / 0
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / GridView WebForms / 20 сообщений из 20, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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