список выбирает не тот элемент

Обновить Я решил проблему, однако закончу публикацию (решено до публикации) в надежде, что это поможет кому-то еще.

Проблема. Для обращения к элементам списка из списка и управления ими требуется, чтобы все элементы списка списка имели уникальное значение listbox.value. В моем случае я назначал имя таблицы как значение списка и имя столбца как listbox.text (я давал пользователю список полей из таблицы sql на выбор). Итак, список, содержащий следующее:

Index 0: Text:street Value:"dbo.incident"
Index 1: Text:city Value:"dbo.incident" 
Index 2: Text:state Value:"dbo.incident" Selected

И затем вы ссылаетесь на элемент textbox1.selected через код, его обработка неожиданна. Сначала он знает выбранный элемент, но в какой-то момент обработки ссылочного элемента списка он начинает ссылаться на него через значение, после чего возвращаемый текст или индекс будут «улица» или «0». Я понимаю, что как только вы начинаете извлекать элементы из списка, он извлекает свое первое совпадение.

начать исходное сообщение

Хорошо, проект - это проект веб-форм vb.net. У меня есть 2 списка, которые я хочу заполнить и перемещать записи вперед и назад, вверх и вниз. Я понимаю, как это сделать, однако я не могу преодолеть это странное ошибочное поведение, которое происходит.

Если я добавляю элементы вручную, как это, он работает нормально, элементы списка передаются между списками, и я могу изменить индексы, как и ожидалось. (в этом посте я буду ссылаться на записи, созданные как статические)

ListBox1.Items.Add(New ListItem("1", "1"))
...through...
ListBox1.Items.Add(New ListItem("10", "10"))

Однако, если я добавляю их программно из оператора linq, ручной выбор на веб-странице не имеет отношения к выбранному элементу, он всегда равен 0, нажатие любой кнопки на странице, обратная передача возвращает список в индекс 0. (для этого обсуждения я будет ссылаться на записи, созданные таким образом, как на динамические)

    Dim db As New MSCRMDataContext
    Dim datamodel = db.Mapping
    For Each r In datamodel.GetTables
        If r.TableName = "dbo.IncidentFull" Then
            For Each r1 In r.RowType.DataMembers
                ListBox1.Items.Add(New ListItem(r1.MappedName, r.TableName))

            Next
        End If
    Next

У меня есть кнопка aspx:

<asp:Button ID="Button1" runat="server" Text="Button" />

Это имеет следующее событие click:

Protected Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

    mlbs_transferitem(ListBox1, ListBox2, ListBox1.SelectedItem)

End Sub

У меня есть подпрограмма, которая передает элемент списка в отдельный файл .vb.

Public Class multilistboxselector
Shared Sub mlbs_transferitem(srclb As ListBox, dstlb As ListBox, lbitem As ListItem, Optional sort As Boolean = False)
'checks if srclb had a selected listitem
If IsNothing(lbitem) Then
    Exit Sub
End If
'check for dupes
For Each li As ListItem In dstlb.Items
    If li.Text = lbitem.Text Then
        If li.Value = lbitem.Value Then
            Exit Sub
        End If
    End If
Next
'add lbitem to dst
dstlb.SelectedIndex = -1
dstlb.Items.Add(lbitem)
'remove lbitem from src
srclb.Items.Remove(lbitem)
'sort dst
If sort = True Then

End If
End Sub

Просто для ясности: код безупречно работает со статическими записями. Я создал новую страницу и воссоздал все там, и у меня такой же опыт, как и у моей исходной страницы.

Изменить

Сокращение моих шагов по устранению неполадок, поскольку они не имеют отношения к проблеме и были довольно длинными.


person Globeadue    schedule 18.07.2012    source источник
comment
слишком большой пост. в чем твоя проблема   -  person Waqar Janjua    schedule 18.07.2012
comment
Решено, как я и говорил в начале поста 8) просто не могу отметить как отвеченный еще 7 часов 8(   -  person Globeadue    schedule 18.07.2012
comment
Могу ли я предложить опубликовать ответ с вашим решением, чтобы другие, обнаружив это, могли увидеть, как вы справились с проблемой?   -  person Ortund    schedule 30.08.2012