列表框选择更改事件选定索引

时间:2011-12-02 05:11:56

标签: asp.net listbox

我是网络建设的新手。我在页面上有以下列表框。页面启用了视图状态。

<asp:ListBox ID="ExamsList_ListBox" runat="server" DataTextField="Namee" viewstate="enabled"
            DataValueField="ID" AutoPostBack="true" Height="213px" Width="152px" 
            ViewStateMode="Enabled" />

数据是运行时的数据绑定。我可以看到列表,但listbox.selectedindex总是会导致&#34; -1&#34;即使我点击框中的第10个值,也只是值。你能告诉我出了什么问题。

以下是页面代码:

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body >
    <form id="form1" runat="server">
    <div>
    <div>
        <asp:ListBox ID="ExamsList_ListBox" runat="server" DataTextField="Namee" viewstate="enabled"
            DataValueField="ID" AutoPostBack="true" Height="213px" Width="152px" 
            ViewStateMode="Enabled" />
    </div>
    </div>
    </form>
</body>
</html>

,填写数据的代码是:

 Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        If IsNothing(CType(Session("Login"), TikoClasses.Login)) Then
            Response.Redirect("~/default.aspx")
        ElseIf (CType(Session("Login"), TikoClasses.Login)).Admin = False Then
            Response.Redirect("~/Loggedin/Welcome.aspx")
        End If
        ExamsList_ListBox.DataSource = DataModule.Exams_listall((CType(Session("Login"), TikoClasses.Login)).Inst_ID)
        ExamsList_ListBox.DataBind()
    End Sub

并且选择改变甚至是:

Try
            Dim k As Integer = ExamsList_ListBox.SelectedIndex
            Dim tt As List(Of Integer) = ExamsList_ListBox.GetSelectedIndices.ToList
            Dim t As Object = ExamsList_ListBox.SelectedValue
            If ExamsList_ListBox.SelectedIndex > -1 Then
                DataModule.GetExam(CType(Session("Login"), TikoClasses.Login).Inst_ID, ExamsList_ListBox.SelectedValue)
            End If
        Catch ex As Exception

        End Try

寻求帮助。提前谢谢。

1 个答案:

答案 0 :(得分:3)

您需要将绑定代码放在!IsPostBack

if(!IsPostBack)
   ExamsList_ListBox.DataSource = DataModule.Exams_listall((CType(Session("Login"), TikoClasses.Login)).Inst_ID)
   ExamsList_ListBox.DataBind()
Endif

因为无论何时选择更改,您的page_load事件都会先触发,您的选择将会丢失。