0

GridView条件を満たした場合、aから完全な行を削除しようとしています。

ここに私は持っています

a Description Column from Product table in databaseaGridViewが入力されます。

sqlcommandvbアプリでをのみに設定しましたselect the Description which does not contain the String s

ここString s has two keywords "Tomatoes" and "Apple"に。したがって、SQLクエリはを取得する必要がありますDescription column that does not have "Tomatoes" and "Apple"

したがって、Gridview条件を満たす行を削除して更新する必要があります。

削除するのに苦労しています

Description row in GridView「トマト」と「アップル」があります。別のGridViewに結果を入力しようとしましたが、いくつかのブレークポイントを指定した値を確認したため、すべてが正しいにもかかわらず、Webページに表示されません。何か提案や考えはありますか?

これが私のコードです:

Dim cmd1 = New SqlCommand(" SELECT DISTINCT [Description] FROM [Product] WHERE ([Description] LIKE '%' + @Description + '%')", conn)
                        cmd1.Parameters.AddWithValue("@Description", s)

         MsgBox("NO")

         For i As Integer = 0 To GridView1.Rows.Count - 1
         DA.SelectCommand = cmd1
         DA.Fill(dt)

         'row is of a GridViewRow datatype As GridView1.Rows
          row.Cells.RemoveAt(i) '' do not know if it is correct or not

         'GridView3.DataSource = '' dt tried with no luck
         'GridView3.DataBind() '' tried with no luck
          cmd1.Dispose()
          DA.Dispose()
          dt.Clear()
          dt.Dispose()
         Next
       End If
4

2 に答える 2

1

GridView の基になるデータ ソースのデータを保持する必要があるが、表示したくない場合、1 つの解決策は GridView で RowDataBound イベントを処理することです。このメソッド内で、基準に対して指定された行をテストします。行が一致する場合、その Visible プロパティを False に設定します。

Public Sub MyGridView_RowDataBound(ByVal sender As Object, ByVal e As GridViewRowEventArgs)

    If e.Row.RowType = DataControlRowType.DataRow Then
        If e.Row.Cells(0).Text = "((value of row to hide))" Then
            e.Row.Visible = False
        Else
            e.Row.Visible = True
        End If
    End If

End Sub
于 2012-12-12T17:33:10.563 に答える
1

オリジナルを操作せずに、DataSource を変更することもできます。「dt」変数にデータベースのデータを入力します。次に、次のようなものでループします

    var stuffIActuallyWantInMyGrid = new List<DataSet>(); //A list of whatever you dt is of
    foreach(var x in dt)
    {
        if(x == WhateverMyCriteriaAre)
        {
           stuffIActuallyWantInMyGrid.Add(x);
        }
    }
    GridView3.DataSource = stuffIActuallyWantInMyGrid;
    GridView3.DataBind();

(ええ、これが C# コードであることは知っていますが、誰かがこの質問に C# のタグを付けました ;-)

于 2012-12-12T17:16:08.800 に答える