2017-03-21 126 views
0

嗨所以我有這個列表,即時通訊當前正在使用的組合框,這就是爲什麼我有idcategoria = 0nomeCategoria = "Select your Category"所以組合框默認項目將「選擇你的類別」。 這裏是清單datagridview不顯示第一行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 

現在我想使用一個DataGridView同一列表的代碼,我想知道是否有一種方法可以不顯示在DataGridView中ID = 0或做我有創建另一個沒有idCategorie = 0的列表,對於datagridview,有關於此的任何想法?感謝

+0

從已經加載的另一個列表中創建:'Dim newList = lstTodos.Skip(1).ToList()'。 – Fabio

+0

與問題無關 - 但您可以刪除「try ... catch」。你沒有處理拋出的異常 - 所以你可以讓你的代碼出價更清晰 – Fabio

+0

@Fabio我正在處理拋出的exeptions當我鏈接列表到組合框和或datagridview –

回答

1

創建從已經加載

Dim newList = lstTodos.Skip(1).ToList() 

Skip方法會返回一個新的集合,而不第一項另一個列表。
請注意,只有當- Select your Category -項目是列表中的第一項時,此方法纔有效。

或者改變你的方法返回列表沒有- Select your Category -項目,並只在需要時添加它。

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 

然後你就可以對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) 

創建類別列表通過這種方法從ObterTodosC方法您刪除副作用。
所以方法責任只會從數據庫中加載項目

+0

你是混合c#與vb.net代碼這裏? xD –

+0

不,你在哪裏看到我在混音? – Fabio

+0

Dim notSelectedCategory As New Ccategoria With { .IdCategoria = 0 .NomeCategoria =「select your category」 } –