【问题标题】:Highlight Grid View Row based on second SQL query results根据第二个 SQL 查询结果突出显示 Grid View Row
【发布时间】:2017-11-26 00:37:03
【问题描述】:

我在后面的代码中使用 ASP.NET 和 VB.NET。我的问题是这样的:

我有一个基于查询 A 加载的网格视图(称为 gvSecondLevel)。(它工作正常)网格视图可以有 1 到 X 的行数。 gvSecondLevel 的第 0 列中的每一行都有一个命令按钮,单击该按钮将显示另一个网格视图(称为 gvThirdLevel),该按钮将显示 gvSecondLevel 中行号的 1 到 X 行。

在 gvThirdLEvel 中有一个名为 OpComplete 的列,它是 0(否)或 255(是)。所以可以说 gvSecondLevel 有 2 行。对于第 1 行,gvThirdLevel 中有 3 行,对于第 2 行 gvSecondLevel,gvThirdLevel 中有 4 行。

现在假设对于 gvSecondLevel 第 1 行,所有 OpComplete 步骤(在 gvThirdLEvel 中)都是 255 或 Complete。

但是对于 gvSecondLevel 第 2 行,假设 gvThirdLevel 的第三行(四行中)有一个 OpComplete 步骤,即 0,但第 1、2 和 4 行都是完整的或 255。

我需要做的是突出显示 gvSecondLevel 中的第 2 行,因为 gvThirdLevel OpComplete 中的第三行为 0。更重要的是 gvThirdLevel 在用户单击 gvSecondLevel 中的行号之前是不可见的。

因此,从本质上讲,我需要了解如何查看 gvThidLevel 查询将为 gvSecondlevel 中的每一行检索到的所有行并突出显示它,以便用户知道特定行有问题。

现在 gvSecondLevel 加载但没有突出显示行。谁能指出一个方向,以便我可以尝试学习如何做到这一点?或者,如果出于某种奇迹,有人已经不得不这样做并且可以共享一些也可以工作的代码,那么我就可以看到它是如何完成的。

更新

gvSecondLvl

____________________________________________________________________________
|           |Line # | Part Description | PCS | Weight | Sq Foot | Comments |
____________________________________________________________________________
|[cmdButton]|   1   | Part blah blah   | 100 | 1,200  | 254     |          |
____________________________________________________________________________
|[cmdButton]|   2   | Part blah blah 2 | 50  | 1,500  | 125     |          |
____________________________________________________________________________

这加载正常。当有人单击特定行号的 cmdButton 时,会显示 gvThirdLvl,比如说第 2 行

gvThirdLvl

___________________________________________________________________________
| Step Comp | Assembly | OP # | WC Code | Due Date  | Qty | Qty Completed |
___________________________________________________________________________
|   Yes     |    0     | 100  | MTLH    | 6/12/2017 | 25  |     25        |
___________________________________________________________________________
|    No     |    0     | 110  |  PC     | 6/14/2017 | 100 |      0        |
___________________________________________________________________________

请记住,在单击 gvSecondLvl 中的第 2 行命令按钮之前,不会显示 gvThirdLvlv。但是当 gvSecondLvl 加载时,我需要(在这种情况下)在单击任何行号之前突出显示第 2 行。这样用户就可以看到第 2 行(在这种情况下)是该订单出现在报告中的原因。

【问题讨论】:

  • TLDR,我浏览了摘要,您基本上说您还没有尝试过任何东西。您的要求隐藏在那堵文字墙的某个地方,但描述一直在继续。我们需要一些有关您要完成的工作的详细信息,以便清楚地说明情况。
  • 基于gridview 2中的单元格突出显示gridview1中的行,除非您单击gridview1中一行的命令按钮,否则该行不会显示
  • 我相信这个描述对你来说很有意义,但我完全不清楚。您可能需要查看此链接以在此问题因不清楚而关闭之前对其进行改进。 stackoverflow.com/help/mcve
  • 这是问题的一部分。我不确定解释它的最佳方式。仅仅因为需要什么,很难解释。我想如果它关闭它就会关闭,但是我在这里看到了其他更长且涉及更多的问题,这些问题没有任何明确的答案并且没有被关闭。
  • 如果您可以模拟您正在尝试做的事情的图像,也许会有所帮助。对此的文字描述实在是太多了。

标签: asp.net sql-server vb.net gridview


【解决方案1】:

如果您在单击按钮时填充行,则可以在数据绑定事件上设置行背景颜色。然后,如果正在绑定的行符合您的条件,您可以突出显示它。

Private Sub GridView_RowDataBound(sender As Object, e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles GridView.RowDataBound, additionalGridView.RowDataBound
    If e.Row.RowType = DataControlRowType.DataRow Then
        If CType(e.Row.FindControl("Line_1"), TextBox).Text = "0" Then
            e.Row.BackColor = Color.Red
        End If
    End If
End Function

【讨论】:

    【解决方案2】:

    这就是我最终设法让它工作的方式。

            For i As Integer = 0 To gvDetailSecondLevel.Rows.Count - 1
            'If gvDetailSecondLevel.Rows(i).Cells(1).Text.ToString > "0" Then
            Dim jNumber As String = lblSONum.Text
            Dim lNumber As String = gvDetailSecondLevel.Rows(i).Cells(1).Text.ToString
            Dim soNumber As String = jNumber & "." & lNumber
            Using conn As New SqlConnection(myConnection2)
                conn.Open()
                Using sqlCmd As New SqlCommand
                    sqlCmd.CommandText = ("Select jo.OpComplete From JobOper jo Where jo.JobNum = @JobNum")
                    sqlCmd.Parameters.AddWithValue("@JobNum", soNumber)
                    sqlCmd.Connection = conn
                    Using sqlDa As New SqlDataAdapter(sqlCmd)
                        Using sqlDT As New DataTable()
                            sqlDa.Fill(sqlDT)
                            For Each row As DataRow In sqlDT.Rows
                                If row.Item(0) = "0" Then
                                    gvDetailSecondLevel.Rows(i).BackColor = Color.Yellow
                                    gvDetailSecondLevel.Rows(i).ForeColor = Color.Red
                                End If
                            Next
                        End Using
                    End Using
                End Using
                conn.Close()
             End Using
             Next
    

    此代码在 gvSecondLvlv DataBound 中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-07-26
      • 1970-01-01
      • 2013-01-02
      • 2015-03-16
      • 1970-01-01
      • 1970-01-01
      • 2020-08-28
      • 2021-01-11
      相关资源
      最近更新 更多