使用 C# ASP.net 中的代码更改水晶报表上的颜色

本文关键字:水晶 报表 颜色 代码 ASP net 使用 | 更新日期: 2023-09-27 18:32:13

我在水晶报告中创建了一个报告。它有这个代码工作得很好,但我有 1 个问题。例如,如果"备注"字段为"A",则应将备注着色为"红色",如果结果为"B",则应将备注着色为"蓝色"。你能帮帮我吗?这是我的代码。

SqlConnection cnn;
string connectionString = null;
string sql = null;
connectionString = "data source=Server; initial catalog=Database1;user id=sa; password= passw0rd";
cnn = new SqlConnection(connectionString);
cnn.Open();
sql = "select Date as DataColumn1, Name as DataColumn2, Year as DataColumn3 Remarks as DataColumn4 from TableStudents";
SqlDataAdapter dscmd = new SqlDataAdapter(sql, cnn);
cnn.Close();
DataSet1 ds = new DataSet1();
dscmd.Fill(ds, "DataTable1");
CrystalReport1 objRpt = new CrystalReport1();
objRpt.SetDataSource(ds.Tables[0]);
objRpt.ExportToDisk(ExportFormatType.PortableDocFormat, Server.MapPath("Reports.pdf"));
ScriptManager.RegisterStartupScript(base.Page, base.Page.GetType(), "check0", "window.open('" + "Reports.pdf" + "','win2','status=no,toolbar=no,scrollbars=no,titlebar=no,menubar=no,resizable=yes,directories=no,location=no');", true);

此代码将在新窗口中完美打开报告。只是改变颜色的问题。我不知道。请告诉我该怎么做。这是一个简单的概念,但我不知道下一步该怎么做。谢谢。

if(result=="A")
{
result.color = "red";
}
else
{
result.color = "blue";
}

使用 C# ASP.net 中的代码更改水晶报表上的颜色

我无法理解您对结果的想法,但我想您有一个字段对象,并且您想根据更改该字段对象来更改颜色代码是:

            foreach (Section sec in report1.Sections)
            {
                for (int i = 1; i < sec.ReportObjects.Count + 1; i++)
                {
                    objMain = report1.Sections[sec.Name].ReportObjects[i];
                    try
                        {
                            FieldObject to1 = (FieldObject)objMain;
                            if(to1.Value == "A")
                            {                                
                                to1.TextColor = ColorToUInt(Color.Red);
                            }
                            else
                            {
                                to1.TextColor = ColorToUInt(Color.Blue);
                            }
                        }
                        catch (Exception){}
                }                
            }

最后,您还必须添加此方法:

    public uint ColorToUInt(Color color)
    {
        return (uint)((color.A << 24) | (color.R << 16) |
        (color.G << 8) | (color.B << 0));
    }

您是否考虑过以下链接:

动态更改字体颜色 1

动态更改字体颜色 2