当行悬停并且列值与另一行匹配时显示工具提示

Posted

技术标签:

【中文标题】当行悬停并且列值与另一行匹配时显示工具提示【英文标题】:Show ToolTip when row hovered and column value matches with another row 【发布时间】:2021-09-25 21:48:45 【问题描述】:

我有一个 DataGrid,它显示我的 SQL Server 表中的每一行,状态为Unallocated

如果悬停单元格或行,则工具提示需要显示如果我的数据库中有另一行的状态为Allocated,并匹配PostCodeTradeDate

工具提示中的信息需要显示匹配的行JobNumberPostCodeTradeDate

如果没有匹配项,则工具提示应显示“此作业没有匹配项”

我的数据网格:

<DataGrid.Columns>
  <DataGridTextColumn Header="Job Number" Binding="Binding ID"/>
  <DataGridTextColumn Header="Job" Binding="Binding JobType"/>
  <DataGridTextColumn Header="Date" Binding="Binding Path=JobDate, StringFormat=\0:dd/MM/yyyy\" x:Name="JobDate"/>
  <DataGridTextColumn Header="Post Code" Binding="Binding PostCode">
    <DataGridTextColumn.CellStyle>
      <Style TargetType="DataGridCell">
        <Setter Property="ToolTip" Value="Job 1234 Allocated to 'EXAMPLE' has been allocated to a job in this area at 13:00pm" />
      </Style>
    </DataGridTextColumn.CellStyle>
  </DataGridTextColumn>
  <DataGridTextColumn Header="Job Status" Binding="Binding Allocation"/></DataGrid.Columns>

我的 SQL 查询:

using (SqlConnection conn = new SqlConnection(connectionString))

    var UserN = User.name;

    conn.Open();

    string query_search = "SELECT * FROM Jobs WHERE (ID LIKE @ID OR PostCode LIKE @PostCode) AND UserAllocated = '" + UserN + "' AND Allocation = 'Unallocated' AND JobStatus != 'Cancelled' ORDER BY JobDate DESC, PostCode";

    SqlCommand cmd = new SqlCommand(query_search, conn);
            
    cmd.Parameters.AddWithValue("@ID", "%" + Search.Text + "%");
    cmd.Parameters.AddWithValue("@PostCode", "%" + Search.Text + "%");

    using (SqlDataAdapter adapter = new SqlDataAdapter(cmd))
    
        DataTable dt = new DataTable();
        adapter.Fill(dt);
              
        tblunallocatedjobs.ItemsSource = dt.DefaultView;          
    

    conn.Close();

我不确定如何解决这个问题,我尝试比较 SQL 查询但没有成功。

【问题讨论】:

【参考方案1】:

现在,您正在 DataGrid 中根据特定条件的 Sql 查询(通过 DataGrid.Columns)显示数据。

如果悬停单元格或行,工具提示需要显示如果我的数据库中有另一行的状态为已分配且具有匹配的邮政编码、贸易和日期。 工具提示中的信息需要显示匹配的行 JobNumber、PostCode、Trade 和 Date。如果没有匹配项,则工具提示应显示“此作业没有匹配项”。

您需要编写更多代码才能获得所需的结果。为了使用工具提示,您需要触发事件DataGridView.CellToolTipTextNeeded (请参考https://docs.microsoft.com/en-us/dotnet/api/system.windows.forms.datagridview.celltooltiptextneeded?view=netframework-4.8,获取说明)。

对于您的特定要求,您需要包含四个不同查询的结果(即,与 1.Unallocated、2.Allocated 相关的查询的结果与匹配的 PostCodeTradeDate , 3. 在工具提示文本中显示匹配的行 JobNumberPostCodeTradeDate,以及 4. 显示 no matches)。

【讨论】:

以上是关于当行悬停并且列值与另一行匹配时显示工具提示的主要内容,如果未能解决你的问题,请参考以下文章

extjs4 在按钮单击而不是鼠标悬停时显示工具提示

禁用按钮时在悬停时显示工具提示

SwiftUI:如何在悬停时显示工具提示/提示?

使用innerHTML在悬停时显示图像图例(不是工具提示)?

有没有办法在 js 或 css 中悬停时显示一种不透明度低的工具提示?

悬停时不显示工具提示文本