【问题标题】:Change the color of a row in Gridview when Checkbox is checked选中复选框时更改 Gridview 中行的颜色
【发布时间】:2020-11-23 21:05:05
【问题描述】:

我有一个datagridview,其中一个模板字段为 asp.net 应用程序中的每一行的复选框。我在PageLoad 事件中运行此代码。当一个人选中任何行上的框时,该行 Backcolor 或 Forecolor 应该以黄色突出显示,但它不起作用。这是我的代码:

foreach (GridViewRow row in gvSummary.Rows)
{
    CheckBox cb = (CheckBox)row.FindControl("chkitemSelector");
    if (cb != null && cb.Checked)
    {
        row.BackColor = Color.Yellow;
    }
}

我怎样才能做到这一点?

【问题讨论】:

  • 不清楚。复选框是否绑定到数据库?你想在客户端或用户发回页面后这样做?
  • 我希望这发生在客户端。当用户选中框时,行突出显示黄色。我还使用复选框的另一个原因是在选中一行时从一行中获取数据键。哪个工作正常。这就是你的意思:复选框是否绑定到数据库?
  • 我想我的问题是,我会将上面的代码放入哪个事件处理程序中?

标签: asp.net datagridview row background-color


【解决方案1】:

如果您想在客户端执行此操作,则无需 Page_Load 事件。 相反,您应该使用 Javascript 或更好的建议 JQuery

看看这些:

【讨论】:

  • 谢谢。我正在寻找一种 ASP.NET 方法来实现这一点。我可以直接使用 ASP.NET 服务器控件的东西。 (DataGridView, Row Events) 之类的。
【解决方案2】:

在您的页面后面的asp.net代码中处理它应该在用户选择他/她的复选框后通过单击按钮或...发回服务器。 您不能使用 row_databinding 或 page_load 。 您可以将代码放在 Button 的点击事件(或任何其他导致回发的控件)中

哦,顺便你可以使用 Asp.net AJAX updatePanel(虽然我不推荐)

【讨论】:

    【解决方案3】:
    protected void GvdAccessorie_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        CheckBox chkActive = e.Row.FindControl("chkselect") as CheckBox;
        if (null != chkActive)
        {
            bool IsVisible = chkActive.Checked;
            e.Row.BackColor = Color.Blue;
            if (!IsVisible)
                e.Row.BackColor = Color.White;
        }
    }
    

    【讨论】:

    • RowDataBound 不会在选中复选框时触发。
    【解决方案4】:

    试试这个

    row.BackColor = System.Drawing.Color.Yellow;
    

    【讨论】:

      【解决方案5】:

      这对我有用! row.BackColor 属性工作正常!

       CheckBox chk = (sender as CheckBox);
          if (chk.ID == "chkAll")
          {
              foreach (GridViewRow row in gdvGroupInfo.Rows)
              {
                  if (row.RowType == DataControlRowType.DataRow)
                  {
                      row.Cells[0].Controls.OfType<CheckBox>().FirstOrDefault().Checked = chk.Checked;
                      string hex = "#337ab7";
                      row.BackColor = System.Drawing.ColorTranslator.FromHtml(hex);
                      row.Font.Bold = true;
                      row.ForeColor = Color.White;
                  }
                  else
                  {
                      row.BackColor = System.Drawing.Color.White;
                      row.ForeColor = Color.Black;
      
                  }
              }
          }
      

      【讨论】:

        【解决方案6】:

        在gridview的复选框中尝试添加checked_changed, 为 checkbox1 设置属性值:AutoPostBack="True"

        Protected Sub checkbox1_CheckedChanged(sender As Object, e As EventArgs)
            Dim ID As CheckBox = CType(sender, CheckBox)
            Dim row As GridViewRow = TryCast((TryCast(sender, CheckBox)).Parent.Parent, GridViewRow)
            Dim hex As String
        
            If ID.Checked = True Then
                hex = "#fff8d8"
                Me.GridView1.Rows(row.RowIndex).BackColor = System.Drawing.ColorTranslator.FromHtml(Hex)
        
            Else
                hex = "#ffffff"
                Me.GridView1.Rows(row.RowIndex).BackColor = System.Drawing.ColorTranslator.FromHtml(Hex)
        
            End If
        
        End Sub
        

        当复选框被选中或未选中时,我可以更改 gridview 行颜色

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2020-09-21
          • 2020-10-05
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-11-24
          • 2015-01-05
          • 2022-12-18
          相关资源
          最近更新 更多