0

GridView如果满足条件,我正在尝试从 a 中删除完整的行。

在这里我得到了

a Description Column from Product table in databaseGridView填充了 a 。

sqlcommand在我的 vb 应用程序中将 设置为 only select the Description which does not contain the String s

在这里String s has two keywords "Tomatoes" and "Apple"。所以 Sql Query 应该检索Description column that does not have "Tomatoes" and "Apple".

因此,Gridview应该通过删除满足条件的行来更新。

我在删除

Description row in GridView其中有“西红柿”和“苹果”。我尝试用结果填充另一个 GridView,但它没有出现在网页中,尽管一切都是正确的,因为我已经看到了我指定一些断点的值。有什么建议或想法吗?

这是我的代码:

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

您仍然可以更改数据源,而无需操作原始数据源。你用数据库中的数据填充你的“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 回答
1

如果您绝对必须将数据保留在 GridView 的底层数据源中,但不希望它显示,则一种解决方案是处理 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 回答