2016-04-12 13 views
0

Ich habe eine Liste von Anlagen mit Namen aus SQL-Tabelle, wo, wenn ich eine Datei auswählen, laden Sie es vom Server. Was ich brauche, um den Namen zu wählen und den Dateinamen zu erhalten (Wert Feild) Ich konnte es reibungslos ausführen, aber wenn ich aus der Liste auswähle, gibt es mir den ursprünglichen Dateinamen. Es ist der Code:VB.NET Get Value on Click aus dem Listenfeld

Protected Sub listload() 
    key = CardView.GetCardValues(CardView.FocusedCardIndex, CardView.KeyFieldName) 
    Dim sql As String = String.Format("Select Name,[File] from tblFile where ParentType='Contract' and ParentID = '{0}' order by ID", key) 
    Dim conn As SqlConnection = New SqlConnection(ConfigurationManager.ConnectionStrings("ProjectC").ConnectionString) 
    Dim SelectCommand As New SqlCommand(sql, conn) 
    conn.Open() 
    attlist.Items.Clear() 
    Dim Reader As SqlDataReader = SelectCommand.ExecuteReader() 
    While Reader.Read() 
     If Reader.HasRows Then 
      attlist.Items.Add(Reader("Name").ToString) 
      attlist.ValueField = Reader("File").ToString 
     End If 
    End While 
    conn.Close() 
    conn.Dispose() 
End Sub 

Protected Sub attlist_SelectedIndexChanged(sender As Object, e As EventArgs) Handles attlist.SelectedIndexChanged 
    Response.ContentType = "APPLICATION/OCTET-STREAM" 
    Dim Header As [String] = "Attachment; Filename=" + attlist.SelectedItem.Value 
    Response.AppendHeader("Content-Disposition", Header) 
    Dim Dfile As New System.IO.FileInfo(Server.MapPath("~/Files/Attachments/" + attlist.SelectedItem.Value)) 
    Response.WriteFile(Dfile.FullName) 
    Response.[End]() 
End Sub 

Spalte [Name] ist der Anzeigename und Spalte [Datei] ist die Befestigung Schätzen Sie Ihre Hilfe Dank.

Antwort

0

Sie müssen Objekte vom Typ ListItem hinzufügen, um die Eigenschaften Text und Value zu füllen. Der korrekte Code wäre:

While Reader.Read() 
    If Reader.HasRows Then 
     attlist.Items.Add(new ListItem(Reader("Name").ToString(),Reader("File").ToString())) 
    End If 
End While 
+0

Danke funktioniert perfekt .. –