在gridview中查找行的单元格并在RowDataBound上执行某些操作

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在gridview中查找行的单元格并在RowDataBound上执行某些操作相关的知识,希望对你有一定的参考价值。

我想只在OnRowDataBound事件上将GridView行中的单个单元格设置为Gray(如果是读者HasRows)。代码段会更改整个列颜色而不是单个单元格。例如:在图像中我只希望“Jan”旁边的单元格为灰色。

protected void setcolor(object sender, GridViewRowEventArgs e )
            {
                if (e.Row.RowType == DataControlRowType.DataRow)
                {               
                    if (txtShopBranch.Text == "Area1")
                        {
                            int index = e.Row.RowIndex;
                            string checkdayone = "SELECT one FROM tblregulardays WHERE  months = 'Jan'  AND shopbranch = 'Area1' AND one = '1'";
                            NpgsqlCommand findDayOne = new NpgsqlCommand (checkdayone, con);
                            con.Open();
                            NpgsqlDataReader reader = findDayOne.ExecuteReader();
                            if(reader.HasRows)
                                {
                                    e.Row.Cells[32].BackColor = System.Drawing.Color.Gray;
                                }
                            else
                                {   
                                    e.Row.Cells[32].BackColor = System.Drawing.Color.White;
                                }
                            con.Close();
                    }

                }
            }

enter image description here

答案

您对每一行使用相同的静态SQL查询:

string checkdayone = @"SELECT one FROM tblregulardays 
                       WHERE  months = 'Jan'  
                          AND shopbranch = 'Area1' 
                          AND one = '1'";

所以当然会产生相同的结果。您必须使用参数化查询。也许:

string month = e.Row.Cells[31].Text.Trim();

string checkdayone = @"SELECT one FROM tblregulardays 
                       WHERE  months = @Month  
                          AND shopbranch = 'Area1' 
                          AND one = '1'";

NpgsqlCommand findDayOne = new NpgsqlCommand (checkdayone, con);
findDayOne.Parameters.AddWithValue("@Month", month);

以上是关于在gridview中查找行的单元格并在RowDataBound上执行某些操作的主要内容,如果未能解决你的问题,请参考以下文章

选择您的 if 语句触发的单元格并在 vba 中选择该单元格

SwiftUI 移动列表单元格并在 CoreData 数据库中填充顺序

目标 C:如何突出显示 tableView 单元格并在重新加载表格时保持突出显示?

如何实现(几乎)全视图 uitableview 可以滚动过去最后一个单元格并在 iOS 中显示更多元素

查找单击了哪个单元格并执行 Segue

Excel VBA - 查找所有具有值的单元格并删除整行(如果存在)