powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Небольшой вопрос по удалению из строк.
13 сообщений из 13, страница 1 из 1
Небольшой вопрос по удалению из строк.
    #32572225
dencat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Небольшой вопрос по удалению из строк.
Есть форма, в ней DataGrid, нужно по нажатию на кнопку на форме удалить выделенную строку и записать изменения в базу данных.
Пишу так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
Private Sub DeleteItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DeleteItem.Click

        Dim cbcust As SqlClient.SqlCommandBuilder

        Try

            Me.BindingContext(dsCust, "CompanyTbl").RemoveAt(Me.BindingContext(dsCust, "CompanyTbl").Position)

            If Not dsCust.GetChanges(DataRowState.Deleted) Is Nothing Then
                cbcust = New SqlClient.SqlCommandBuilder(daCust)
                daCust.DeleteCommand = cbcust.GetDeleteCommand
                daCust.Update(dsCust, "CompanyTbl")
                dsCust.Tables("CompanyTbl").AcceptChanges()
            End If

        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try
    End Sub

В результате удаляется все время первая позиция, без учета положения курсора, что не так?
...
Рейтинг: 0 / 0
Небольшой вопрос по удалению из строк.
    #32572283
dencat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вопрос решился, пока..., написал так:
Вместо
Код: plaintext
1.
Me.BindingContext(dsCust, "CompanyTbl").RemoveAt(Me.BindingContext(dsCust, "CompanyTbl").Position)

написал

Код: plaintext
1.
dsCust.Tables("CompanyTbl").Rows(dgForm1.CurrentCell.RowNumber).Delete()

И вроде все заработало.
...
Рейтинг: 0 / 0
Небольшой вопрос по удалению из строк.
    #32572497
vooo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вероятно, надо делать через CurrencyManager
извеняюсь что в C# синтаксисе

CurrencyManager cm= (CurrencyManager) this.BindingContext[dsCust, "CompanyTbl"];
DataRowView row=(DataRowView)cm.Current;
row.Delete();
...
Рейтинг: 0 / 0
Небольшой вопрос по удалению из строк.
    #32572909
Sa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 voo
Все таки не в этом проблема, ваш пример без дополнительного обучения :-) тоже не будет работать

2 dencat
Попробуйте вместо (старый вариант):
Код: plaintext
1.
Me.BindingContext(dsCust, "CompanyTbl").RemoveAt(Me.BindingContext(dsCust, "CompanyTbl").Position
эту строчку:
Код: plaintext
1.
Me.BindingContext(dsCust, "CompanyTbl").RemoveAt(Me.BindingContext(me.dataGrid1, me.dataGrid1.DataMember).Position ' где dataGrid1 ваш dataGrid в котором вы выбираете записи

Вопрос решился, пока...

Так как вы угадали в том что вопрос решился пока... , то совет такой НИКОГДА так не делайте :
Код: plaintext
1.
'dsCust.Tables("CompanyTbl").Rows(dgForm1.CurrentCell.RowNumber).Delete()


Код: plaintext
 uid  =  S a
...
Рейтинг: 0 / 0
Небольшой вопрос по удалению из строк.
    #32572910
Sa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sorry:

эту строчку в моем посте :
Код: plaintext
1.
Me.BindingContext(dsCust, "CompanyTbl").RemoveAt(Me.BindingContext(me.dataGrid1, me.dataGrid1.DataMember).Position ' где dataGrid1 ваш dataGrid в котором вы выбираете записи

читать как:
Код: plaintext
1.
Me.BindingContext(me.dataGrid1, me.dataGrid1.DataMember).RemoveAt(Me.BindingContext(me.dataGrid1, me.dataGrid1.DataMember).Position ' где dataGrid1 ваш dataGrid в котором вы выбираете записи


Код: plaintext
 uid  =  S a
...
Рейтинг: 0 / 0
Небольшой вопрос по удалению из строк.
    #32572981
vooo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2sa
Считаю Вас специалистом в ADO.NET (ни капли иронии)
Но почему не будет работать пример, не очень понимаю?
Вроде бы у меня примерно такой код работает..........
...
Рейтинг: 0 / 0
Небольшой вопрос по удалению из строк.
    #32573189
Sa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vooo
Но почему не будет работать пример, не очень понимаю?
Вроде бы у меня примерно такой код работает..........

Я не говорю что у вас этот код не работает, у меня он тоже работает :-)
Основание то что он не будет работать сделано в контексте данной темы:
dencat
Код: plaintext
1.
Me.BindingContext(dsCust, "CompanyTbl").RemoveAt(Me.BindingContext(dsCust, "CompanyTbl").Position)
В результате удаляется все время первая позиция, без учета положения курсора

При этом я вижу что BindingContext один и тот же что в вашем примере что в примере dencat, В вашем примере просто другая вариация удаления строки (этой же вариацией через currencymanager часто пользуюсь и я)

К сожалению много можно тут говорить подтвердить версию сможет только dencat. Да и код весь не видно чтобы однозначно судить.

Пока.... :-) я утверждаю что ваш вариант у dencat работать не будет:
Код: plaintext
1.
2.
3.
CurrencyManager cm= (CurrencyManager) this.BindingContext[dsCust, "CompanyTbl"];
DataRowView row=(DataRowView)cm.Current;
row.Delete();

но переделанный следующим образом вариант отработает у dencat как надо, но не должен отработать у вас:
Код: plaintext
1.
2.
3.
CurrencyManager cm= (CurrencyManager) this.BindingContext[dsCust.Tables["CompanyTbl"], ""];
DataRowView row=(DataRowView)cm.Current;
row.Delete();

P.S. я предпочитаю брать bindingcontext непосредственно у DataGrid.

Код: plaintext
 uid  =  S a
...
Рейтинг: 0 / 0
Небольшой вопрос по удалению из строк.
    #32573228
Sa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще раз внимательно перечитал весь топ:

Мой пост от "08:27" прошу считать бредом. Так как предложенная строка :-) содержат 3 ошибки , спасибо vooo так не заглянув сюда я бы не исправился вовремя. Самое главная ошибка что предложил версию bindingcontext item не по теме.

Итак очередные (надеюсь последние исправления):

Строку:
Код: plaintext
1.
Me.BindingContext(me.dataGrid1, me.dataGrid1.DataMember).RemoveAt(Me.BindingContext(me.dataGrid1, me.dataGrid1.DataMember).Position 

следует читать как:
Код: plaintext
1.
Me.BindingContext(me.dataGrid1.DataSource).RemoveAt(Me.BindingContext(me.dataGrid1.DataSource).Position)


Код: plaintext
 uid  =  S a
...
Рейтинг: 0 / 0
Небольшой вопрос по удалению из строк.
    #32573279
dencat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо, сейчас попробую.
...
Рейтинг: 0 / 0
Небольшой вопрос по удалению из строк.
    #32573305
dencat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да последний вариант работает, все нормально.
А как правильнее - с помощью CurrencyManager или как в последнем посте?
...
Рейтинг: 0 / 0
Небольшой вопрос по удалению из строк.
    #32573339
Sa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dencat
А как правильнее - с помощью CurrencyManager или как в последнем посте?


И так итак правильно:
Так как вас заинтересовал способ через CurrencyManager то переведу его на VB.NET:

Вариант 1:
Код: plaintext
1.
2.
3.
Dim cm as CurrencyManager = CType(me.bindingContext(dsCust.Tables("CompanyTbl", "")
Dim row As DataRowView = CType(cm.Current, DataRowView)
row.Delete()
Предлагаю вам проверить этот вариант.

А также проверьте Вариант 2:
Код: plaintext
1.
2.
3.
Dim cm as CurrencyManager = CType(me.bindingContext(me.datagrid1.DataSource))
Dim row As DataRowView = CType(cm.Current, DataRowView)
row.Delete()
...
Рейтинг: 0 / 0
Небольшой вопрос по удалению из строк.
    #32573351
Sa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блин да что такое
Sorry исправляю Вариант 1:
Код: plaintext
1.
2.
3.
Dim cm As CurrencyManager = CType(Me.BindingContext(dsCust.Tables("CompanyTbl"), ""), CurrencyManager)
Dim row As DataRowView = CType(cm.Current, DataRowView)
row.Delete()

и вариант 2:
Код: plaintext
1.
2.
3.
Dim cm As CurrencyManager = CType(Me.BindingContext(dsCust.Tables("CompanyTbl"), ""), CurrencyManager)
Dim row As DataRowView = CType(cm.Current, DataRowView)
row.Delete()

Код: plaintext
 uid  =  S a
...
Рейтинг: 0 / 0
Небольшой вопрос по удалению из строк.
    #32573360
dencat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо, сейчас попробуем:)
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Небольшой вопрос по удалению из строк.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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