WinterPrison Ответов: 3

Можно ли удалить элемент из списка, заполненного базой данных?


Прежде чем я спрошу "Как удалить элемент из списка, заполненного базой данных"

Можно ли удалить элемент из списка, заполненного базой данных?

Что я уже пробовал:

если это возможно, то мой код не работает:
Dim str As String
            Dim drv As DataRowView = CType(ListBox1.SelectedItem, DataRowView)
            str = CStr(drv.Row.Item("PName"))
            ListBox1.Items.Remove(ListBox1.SelectedItem(str))

Это, как я заполнения мой ListBox элемент:

'Populate the ListBox with personnelName from personnel '
       Try
           connection = New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\Nikko Jaze Fabellon\Documents\ASRASIM.accdb")
           connection.Open()
           ds = New DataSet
           tables = ds.Tables
           dataAdapter = New OleDbDataAdapter("SELECT [FirstName],[LastName] from [Personnel] where [Status] = 'Activated' ", connection)
           dataAdapter.Fill(ds, "Personnel")
           Dim view1 As New DataView(tables(0))
           With personnelList
               .DataSource = ds.Tables("Personnel")
               .DisplayMember = "FirstName"
               .ValueMember = "LastName"
               .SelectedIndex = 0
           End With

           connection.Close()

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


или, если это невозможно, мне нужен совет, чтобы придумать другой способ.

phil.o

Если поле со списком привязано к данным, то нет, вы не можете удалить элемент таким образом. Ты должен отфильтруйте источник данных вместо этого, чтобы он не возвращал элемент, который вы не хотите видеть.
Фильтрация источника данных обычно производится через WHERE заявление.

WinterPrison

я обновил свои коды, вы можете мне помочь, сэр?

3 Ответов

Рейтинг:
2

RickZeeland

Вы могли бы использовать объект DataTable подобный этому:

using (SqlConnection conn = new SqlConnection(CONN_STR))
using (SqlDataAdapter da = new sqlDataAdapter("roboticSiteNames", conn)) {
DataSet ds = new DataSet();
da.Fill(ds);
DataTable dt = ds.Tables[0];

// 1. set DisplayMember and ValueMember
lbSiteCode.DisplayMember = dt.Columns[0].ColumnName;
lbSiteCode.ValueMember = dt.Columns[1].ColumnName;
// 2. set DataSource
lbSiteCode.DataSource = dt;
}
Это из ответа здесь: Объект DataTable в список[^]

Затем вы можете удалить строки в таблице DataTable, см. Как удалить строки в таблице данных[^]

Это также можно сделать в набор данных например ,
NorthwindDataSet1.Customers.Rows(0).Delete()


WinterPrison

я использую доступ сэр, я обновил свои коды, пожалуйста, взгляните и помогите мне?

Maciej Los

Похоже, ваш ответ не соответствует вопросу ОП.

RickZeeland

Ну, я указывал ему в правильном направлении, надеюсь, обновил ответ, чтобы прояснить ситуацию !

Maciej Los

Я думаю, что вы, возможно, правы.

Рейтинг:
0

Maciej Los

WinterPrison[^] писанное:
Прежде чем я спрошу "Как удалить элемент из списка, заполненного базой данных"

Можно ли удалить элемент из списка, заполненного базой данных?


До тех пор пока а ListBox элемент управления не привязан к источнику данных, вы можете легко удалить элемент из этого элемента управления. Ваш ListBox объект не привязан к источнику данных, поэтому... Видеть:
ListBox.ObjectCollection.Удалить Метод (Объект) (System.Окна.Формы)[^]
Как добавить и удалить элементы из элемента управления ComboBox, ListBox или CheckedListBox Windows Forms | Microsoft Docs[^]
С другой стороны, вы должны обновить источник данных вместо удаления ListBox пункт. Видеть:
Как отразить обновления источника данных в элементе управления Windows Forms с помощью BindingSource | Microsoft Docs[^]
Обновление и повторная привязка ссылок на источники данных[^]
Как обновить источник данных с помощью данных из главного элемента управления[^]

Удачи вам!


Рейтинг:
0

RickZeeland

Как вы используете DataView теперь вы можете использовать .RowFilter подобный этому:

dv.RowFilter = "FirstName < 'Peter'";
Видеть: DataView.Свойство RowFilter (System.Data)[^]
Вот хороший обзор: Синтаксис DataView RowFilter [C#][^]


Maciej Los

И этот тоже...
;(