更新我已经解决了这个问题,但是会完成发布(在发布之前解决),希望它可以帮助其他人 .

问题:从列表框中引用和操作列表项要求列表框的列表项都具有唯一的listbox.value . 在我的例子中,我将tablename指定为列表框值,将columname指定为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” . 我知道,一旦你开始从列表框中提取项目,它就会拉出第一场比赛 .

begin original post

好的项目是一个vb .net网络表单项目我有2个列表框,我想填充并来回移动条目,上下 . 我知道如何做到这一点,但我似乎无法克服正在发生的这种奇怪的错误行为 .

如果我像这样手动添加项目它工作正常,listitems在列表框之间传输,我可以按预期更改索引 . (对于这篇文章,我将引用创建的条目为静态)

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" />

这有以下点击事件:

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

    mlbs_transferitem(ListBox1, ListBox2, ListBox1.SelectedItem)

End Sub

我有一个sub,它将listitem转移到一个单独的.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

为了清楚起见,代码与静态条目完美配合 . 我创建了一个新页面并在那里重新创建了所有内容,并且我拥有与源页面相同的体验 .

Edit

修剪我的故障排除步骤,因为它们证明与问题无关并且非常冗长 .