faiqaa Ответов: 1

Как обновить данные из списка и отобразить обновленные данные в списке в VB?


The form allows me to register customers and save their relevant details into a text file, once I save customers I display this information into a list box. My main aim is now to be able to amend information relative to a customer I have already saved therefore when I select one customer's data from the list box these details are put into numbered text boxes (txtBox1 which is for the customer name and txtBox2 for customer date of birth). I have tried using the code below in (btnUpdate_Click) to only change the parts of data that are amended and avoiding any repetition but it does not seem to work, does anyone got any suggestions? Thank you.

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

Dim strAmendedRecord As String = ""
        For N As Integer = 1 To 5
            Dim txtBoxN As TextBox = Me.Controls.Find("txtBox" & N, True).FirstOrDefault
            If Not IsNothing(txtBoxN) Then
                strAmendedRecord += txtBoxN.Text & (",")
            End If

        Next
        MsgBox(strAmendedRecord)
       
        ListBox1.SelectedIndex = ListBox1.SelectedIndex - 1
        ListBox1.Items.RemoveAt(ListBox1.SelectedIndex - 1)
        ListBox1.Items.Add(ListBox1.SelectedIndex + 1)



        Dim data As String = ""
        For Each item In ListBox1.Items
            data &= item.ToString() & vbNewLine

        Next

1 Ответов

Рейтинг:
0

Ralf Meier

У вас есть 2 разные проблемы :

1-й:
Если вы хотите ввести нового клиента в свой список, вы вводите свои данные в текстовые поля.
После этого у вас должна быть кнопка, которая либо должна сохранить эти данные в вашем файле, а также изменить ваш список.
Возможно, Вам также следует проверить, существуют ли еще "новые" введенные данные внутри вашего файла.

2-й:
Вы выбираете одну из записей списка. В этом случае вы получаете Listbox-событие SelectedIndexChanged. В зависимости от этого события вы загружаете соответствующие данные из своего файла и отображаете их в текстовых полях.

Ничего из этого я не могу найти в вашем фрагменте кода ... :(


faiqaa

Да, я использую кнопку отправки, это шляпа, которую я использовал для Listbox-Event SelectedIndexChanged:
Dim curItem As String = ListBox1.SelectedItem.Метод toString()
Dim parts As String() = curItem.Split(New String(){","}, StringSplitOptions.RemoveEmptyEntries)

Для меня как integer = 0 на части.Функция count()-1
Dim txt As TextBox = DirectCast(Me.Controls("txtBox" & i+1), System.Окна.Формы.текстовый)
формат txt.Текст = части(i)
Следующий
Я не знаю, что вы подразумеваете под "возможно, Вам также следует проверить, существуют ли еще "новые" введенные данные в вашем файле."

Ralf Meier

Если вы используете Listbox-Event SelectedIndexChanged, вы выбрали одну из ваших все еще существующих записей и хотите перенести ее в свои текстовые поля. Здесь вам не нужна кнопка "Отправить". Событие возникает, когда выбор внутри списка изменяется (как говорит имя события).
Это то, что я описал в пункте "2-й"

Но (возможно, я неправильно понял ваше требование) вы также хотите добавить новые данные в свой список. В этом случае (я полагаю) вы вводите новые данные в свои текстовые поля и нажимаете "Отправить", когда ввод завершен. В этом случае вы должны использовать Click-Event от кнопки и перенести данные в свой список. Сейчас... Я бы проверил, действительно ли эти "новые введенные данные" являются новыми ... или другими словами, Я бы проверил, существуют ли эти данные все еще в вашем списке, чтобы предотвратить двойные записи ...

faiqaa

Hi, I'll try explaining everything in detail as I think you did not understand what I'm meant to do, I am using three buttons( SUBMIT,AMEND and DISPLAY) , I use the same numbered text boxes to register a customer(customer name,date of birth..) and then press the SUBMIT button, the relevant data is saved into a text file. I later press the DISPLAY button which basically means that the data from the text file is read and displayed in a list box. Now my problem is not being able to "Amend" the data I've already saved, for example I would need this in case a customer's address changes therefore instead of adding a new customer I would only need to change this customer's address. For this reason whenever I select a customer from the list box, the row of data (customer name,date of birth,address) are split and copied into the relevant text boxes, for example the customer name would be automatically copied into the txtBox1 and the date of birth in txtBox2. I have only decided to use this copy function so that I would be able to amend but I'm having issues with it, I have tried using the code that you can see above but it's not helping. Thank you for your time.

Ralf Meier

Привет,
Я уверен, что полностью понял вашу проблему. Последняя часть, которую вы описали, совпадает с тем, что я имел в виду: "вы также должны проверить, существуют ли "новые" введенные данные все еще внутри вашего файла."
Здесь 2 возможности :
1 - й: у вас есть данные, введенные в ваши текстовые поля, которые уже существуют в вашем списке-и вы нажимаете "Отправить". В этом случае (без чека) вы получаете двойные записи. Таким образом, вы обычно должны перебирать свой список и сравнивать новый блок данных с каждым существующим. Если вы получаете совпадение в какой-то момент, Вы не должны добавлять "новые" данные в свой список ...

2 - й: вы хотите изменить части ваших данных-здесь вы должны решить, какая часть ваших данных является "индексом". Я бы посоветовал вам взять имя клиента. Поэтому, если вы нажмете "изменить" (или "изменить"), вы должны посмотреть, есть ли запись с тем же именем клиента. Если да, то вы заменяете эту запись своим новым блоком данных-но: что делать, если у вас действительно есть 2 записи клиента, которые имеют одно и то же имя, но действительно разные адреса ? Что ты теперь собираешься делать ?