2017-03-21 8 views
0

hi so habe ich diese Liste, die ich derzeit auf einer Combobox verwende, deshalb habe ich die idcategoria = 0 mit der nomeCategoria = "Select your Category" so die Combobox Standard-Artikel wäre "wählen Sie Ihre Kategorie". hier ist der Code der Listedatagridview zeigt nicht die erste Zeile vb.net

Public Shared Function ObterTodosC() As List(Of Ccategoria) 
    Dim lstTodos As List(Of Ccategoria) = New List(Of Ccategoria) 

    Dim p As Ccategoria = New Ccategoria() 
    p.IdCategoria = 0 
    p.NomeCategoria = "select your category" 
    lstTodos.Add(p) 

    Try 
     Using con As SqlConnection = New SqlConnection() 

      con.ConnectionString = myDAC._connectionString 
      Using cmd As SqlCommand = con.CreateCommand() 

       cmd.CommandText = "select * from Categoria" 
       con.Open() 
       Dim dr As SqlDataReader = cmd.ExecuteReader() 
       While dr.Read() 
        Dim p As Ccategoria = New Ccategoria() 
        p.IdCategoria = dr.GetInt32(0) 
        p.NomeCategoria = dr.GetString(1) 
        lstTodos.Add(p) 
       End While 
      End Using 
     End Using 
    Catch ex As SqlException 
     Throw ex 
    Catch ex As Exception 
     Throw ex 
    End Try 
    Return lstTodos 
End Function 

Jetzt i die gleiche Liste auf einem Datagridview verwenden möchten, und ich wollte wissen, ob es einen Weg gibt, nicht die id = 0 auf dem Datagridview zeigen, oder muss ich um eine andere Liste ohne die IDCategorie = 0 für die Datagridview zu erstellen, irgendwelche Ideen dazu? Dank

+0

Erstellen Sie eine andere Liste aus bereits geladen: 'Dim newList = lstTodos.Skip (1) .ToList()'. – Fabio

+0

Nicht mit der Frage verbunden - aber Sie können "versuchen ... fangen" entfernen. Sie behandeln nicht geworfene Ausnahmen - so können Sie Ihren Code wenig Gebot mehr klarer machen – Fabio

+0

@Fabio im bin die verworfenen Ausnahmen, wenn ich die Liste mit der Combobox verbinden oder oder datagridview –

Antwort

1

von bereits

geladen weiterer Liste erstellen
Dim newList = lstTodos.Skip(1).ToList() 

Skip Methode ohne erstes Element neue Kollektion zurück.
Beachten Sie, dass dieser Ansatz nur funktioniert, wenn - Select your Category - Element ein erstes Element in der Liste ist.

Oder ändern Sie Ihre Methode, um die Liste zurück ohne - Select your Category - Artikel und fügen Sie es nur, wenn Sie benötigen.

Public Shared Iterator Function ObterTodosC() As IEnumerable(Of Ccategoria) 
    Using con As SqlConnection = New SqlConnection() 

     con.ConnectionString = myDAC._connectionString 
     Using cmd As SqlCommand = con.CreateCommand() 

      cmd.CommandText = "select * from Categoria" 
      con.Open() 
      Dim reader As SqlDataReader = cmd.ExecuteReader() 

      While reader.Read() 
       Yield New Ccategoria With 
       { 
        .IdCategoria = reader.GetInt32(0), 
        .NomeCategoria = reader.GetString(1) 
       } 
      End While 
     End Using 
    End Using 
End Function 

Dann können Sie die Liste der Kategorien für Datagridview

Dim forDataGridView = ObterTodosC().ToList() 

Dim notSelectedCategory As New Ccategoria With 
{ 
    .IdCategoria = 0, 
    .NomeCategoria = "select your category" 
} 
Dim forComboBox = forDataGridView.ToList() 
forComboBox.Insert(0, notSelectedCategory) 

Mit diesem Ansatz Ihre entfernen Nebenwirkung von ObterTodosC Methode erstellen.
So wird die Methode Verantwortung nur Elemente aus der Datenbank laden

+0

mischen Sie C# mit VB.net-Code Hier? xD –

+0

Nein, wo siehst du ich mische? – Fabio

+0

Dim notSelectedCategory As New Ccategoria Mit { .IdCategoria = 0 .NomeCategoria = "wählen Sie Ihre Kategorie" } –

Verwandte Themen