C# 缩进datagridview的某些行
我有一个WinForms应用程序,它使用查询从Access中的表中读取一些数据,并将其打印到datagridview。我只是想知道是否有任何可能的方法,我可以缩进或突出显示一行匹配的“序列号”。应该有两个匹配的“序列号”,但我只想缩进或突出显示其中一个。这是我的东西如果有什么帮助的话C# 缩进datagridview的某些行,c#,ms-access,datagridview,C#,Ms Access,Datagridview,我有一个WinForms应用程序,它使用查询从Access中的表中读取一些数据,并将其打印到datagridview。我只是想知道是否有任何可能的方法,我可以缩进或突出显示一行匹配的“序列号”。应该有两个匹配的“序列号”,但我只想缩进或突出显示其中一个。这是我的东西如果有什么帮助的话 ad.SelectCommand = new OleDbCommand("SELECT b.RSV_CAT, b.SEQNUM, b.LEASE, b.WELL_ID, a.QUALIFIER, a.KEYWOR
ad.SelectCommand = new OleDbCommand("SELECT b.RSV_CAT, b.SEQNUM, b.LEASE, b.WELL_ID, a.QUALIFIER, a.KEYWORD, a.EXPRESSION FROM [AC_ECONOMIC] a INNER JOIN [AC_PROPERTY] b on a.PROPNUM=b.PROPNUM WHERE a.KEYWORD = '" + end + "' AND a.QUALIFIER = '" +qual+ "' AND a.EXPRESSION LIKE 'SN%'", con);
ad3.SelectCommand = new OleDbCommand("SELECT b.RSV_CAT, b.SEQNUM, b.LEASE, b.WELL_ID, a.QUALIFIER, a.KEYWORD, a.EXPRESSION FROM [AC_ECONOMIC] a INNER JOIN [AC_PROPERTY] b on a.PROPNUM=b.PROPNUM WHERE a.KEYWORD = '" + start + "' AND a.QUALIFIER = '" + qual + "' AND a.EXPRESSION LIKE 'SN%'", con3);
我想用start
变量或ad3缩进或突出显示查询。选择Command
。任何帮助都将不胜感激
这里还有一些我的dataGridView
代码,可以去掉边界
private void newWindow_Load(object sender, EventArgs e)
{
this.dataGridView3.AdvancedCellBorderStyle.Left = DataGridViewAdvancedCellBorderStyle.None;
this.dataGridView3.AdvancedCellBorderStyle.Right = DataGridViewAdvancedCellBorderStyle.None;
this.dataGridView3.AdvancedCellBorderStyle.Bottom = DataGridViewAdvancedCellBorderStyle.None;
this.dataGridView3.AdvancedCellBorderStyle.Top = DataGridViewAdvancedCellBorderStyle.None;
dataGridView3.DataSource = ((Form1)frm1).ds.Tables[0];
}
好的,这是一个非常简单的Winforms DatagridView示例,它在满足特定条件时在单元格上循环并高亮显示行。到目前为止,这是您需要的确切解决方案,但可以给您一个指导原则:-)
我在玩指南示例,并对迭代单元格的最后一部分使用了不同的方法。(VB语言)
我不确定在不亲自处理绘图的情况下是否进行缩进,但您可以根据自己的喜好格式化(例如,设置颜色)单元格、行甚至列。@有没有办法只对ad3查询进行缩进?我可以通过在循环中遍历DataGridView并识别符合条件的单元格来完成缩进。稍后我将发布一个示例。我附上了一个关于如何检查DataGridView的非常简单的示例。您可以进一步了解这一点,但这可能足以将您推向正确的方向。这确实提供了指导,但我如何只突出显示datagrid中的一个匹配值?很抱歉问了这么多问题。
//Creation of DataTable
DataTable t = new DataTable("myTable");
t.Columns.Add(new DataColumn("Field1", typeof(string)));
t.Columns.Add(new DataColumn("Field2", typeof(int)));
t.Columns.Add(new DataColumn("Field3", typeof(string)));
t.Columns.Add(new DataColumn("Field4", typeof(string)));
//Adding test data to DataTable
t.Rows.Add(new object[] { "Value1", 300, "Test1", "Test2" });
t.Rows.Add(new object[] { "Value2", 1100, "Test3", "Test4" });
t.Rows.Add(new object[] { "Value3", 900, "Test5", "Test6" });
t.Rows.Add(new object[] { "Value4", 100, "Test7", "Test8" });
t.Rows.Add(new object[] { "Value5", 1200, "Test9", "Test10" });
//Creation of DataSet
DataSet s = new DataSet();
s.Tables.Add(t);
//Assigning DataSet to DataGridView (here's where you start looking)
dataGridView1.DataSource = s;
dataGridView1.DataMember = "myTable";
foreach (DataGridViewRow r in dataGridView1.Rows)
{
foreach (DataGridViewCell c in r.Cells)
{
if (c != null && c.Value != null) //to avoid blank or 'new' rows
{
if (c.OwningColumn.Name == "Field2" && (int)c.Value > 1000)
{
foreach (DataGridViewCell cell in c.OwningRow.Cells)
{
cell.Style.BackColor = Color.Aquamarine;
}
}
}
}
}
Dim tbl As DataTable = New DataTable
tbl.Columns.Add("Field1") ' default type of String
tbl.Columns.Add("Field2", GetType(System.Int32))
tbl.Columns.Add("Field3")
tbl.Columns.Add("Field4")
'Adding test data to DataTable
tbl.Rows.Add(New Object() {"Value1", 300, "Test1", "Test2"})
tbl.Rows.Add(New Object() {"Value2", 1100, "Test3", "Test4"})
tbl.Rows.Add(New Object() {"Value3", 900, "Test5", "Test6"})
tbl.Rows.Add(New Object() {"Value4", 100, "Test7", "Test8"})
tbl.Rows.Add(New Object() {"Value5", 1200, "Test9", "Test10"})
' alternate way to add and address data, second column left as DbNull
Dim x As DataRow
x = tbl.NewRow
x(0) = "Val x"
x("Field3") = "test"
x!Field4 = "xyzzy"
tbl.Rows.Add(x)
For i As Int32 = 1 To 5 ' add more data
x = tbl.NewRow
x(0) = "Val x"
x!Field2 = i * 250
x("Field3") = "test"
x!Field4 = "xyzzy"
tbl.Rows.Add(x)
Next
'Assigning DataTable to DataGridView DataSource
DataGridView1.DataSource = tbl
DataGridView1.ClearSelection()
For Each r As DataGridViewRow In DataGridView1.Rows
If Not IsDBNull(r.Cells("field2").Value) AndAlso CInt(r.Cells("Field2").Value) > 1000 Then
For Each cell As DataGridViewCell In r.Cells
cell.Style.BackColor = Color.Aquamarine
Next
End If
Next