2017-03-21 20 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のない別のリストを作成するにはどうすればいいですか?おかげ

+0

既にロードされている別のリストを作成します: 'Dim newList = lstTodos.Skip(1).ToList()'。 – Fabio

+0

質問には関係ありませんが、 'try ... catch'を削除できます。あなたはスローされた例外を処理しません - あなたはあなたのコードを少し明確にすることができます – Fabio

+0

@Fabio私はコンボボックスとまたはdatagridviewにリストをリンクするときに投げられたexeptionsを処理しています –

答えて

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 

その後、ObterTodosCメソッドからこのアプローチでは、あなたの削除の副作用を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) 

のカテゴリのリストを作成することができます。
メソッドの責任は、データベースからのアイテムのみを読み込みます。

+0

あなたはvb.netコードここに? xD –

+0

いいえ、どこに混ざっているのですか? で新しいCcategoriaとして – Fabio

+0

薄暗いnotSelectedCategoryそのC#コードイマイチ –

関連する問題