水晶报表能不能象excel那样自由拉动列宽呢。

解决方案 »

  1.   

    haibodotnet (海波.NET)
    可惜呀......
      

  2.   

    如何向 CrystalReportViewer 和 ReportDocument 传递参数……一、CrystalReportViewer
    通过 CrystalReportViewer.ParameterFieldInfo 属性……1、CrystalReportViewer 成员
    公共实例属性
    ParameterFieldInfo(从 CrystalReportViewerbase 继承) ParameterFields。获取或设置参数字段集合。 二、ReportDocument
    通过 ReportDocument.DataDefinition.ParameterFields 属性……1、ReportDocument 成员
    公共实例属性
    DataDefinition DataDefinition。获取 DataDefinition 对象。 2、DataDefinition 成员
    公共实例属性
    ParameterFields ParameterFieldDefinitions。获取 ParameterFieldDefinitions 集合。 三、参数字段运行时自定义(CrystalReportViewer)参考:
    设置参数 | Windows 窗体查看器的绑定选项 | Web 窗体查看器的绑定选项 可支持用户在 Crystal 报表中通过参数进行输入。这种参数有多种用途。例如: 
    使参数基于数据库字段并允许用户指定该字段的值,以便对报表中的数据进行筛选。 
    使用参数字段将条件格式应用于报表。 
    使用参数字段来定义排序顺序。 
    下列示例说明如何在运行时通过代码设置参数字段值。此例解释了如何设置两个不同的参数:第一个是多值离散参数,第二个是区域值参数。在运行时修改参数字段[Visual Basic] 
    ' 声明将参数传递给
    '查看器控件所需的变量。
    Dim paramFields As New ParameterFields()
    Dim paramField As New ParameterField()
    Dim discreteVal As New ParameterDiscreteValue()
    Dim rangeVal As New ParameterRangeValue()' 第一个参数是具有多个值的离散参数。' 设置参数字段的名称,它必须
    '和报表中的参数相符。
    paramField.ParameterFieldName = "客户姓名"' 设置第一个离散值并将其传递给该参数
    discreteVal.Value = "AIC Childrens"
    paramField.CurrentValues.Add(discreteVal)' 设置第二个离散值并将其传递给该参数。
    ' discreteVal 变量被设置为新值,这样,以前的设置
    '就不会被覆盖。
    discreteVal = New ParameterDiscreteValue()
    discreteVal.Value = "Aruba Sport"
    paramField.CurrentValues.Add(discreteVal)' 将该参数添加到参数字段集合。
    paramFields.Add(paramField)' 第二个参数为区域值。paramField 变量
    '被设置为新值,这样,以前的设置就不会被覆盖。
    paramField = New ParameterField()' 设置参数字段的名称,它必须
    '和报表中的参数相符。
    paramField.ParameterFieldName = "客户 ID"' 设置区域的开始值和结束值并将区域传递给该参数。
    rangeVal.StartValue = 42
    rangeVal.EndValue = 72
    paramField.CurrentValues.Add(rangeVal)' 将第二个参数添加到参数字段集合。
    paramFields.Add(paramField)' 将参数字段集合放入查看器控件。
    crystalReportViewer1.ParameterFieldInfo = paramFieldscrystalReportViewer1.ReportSource = "c:\reports\my report.rpt"[C#] 
    // 声明将参数传递给
    //查看器控件所需的变量。
    ParameterFields paramFields = new ParameterFields ();
    ParameterField paramField = new ParameterField ();
    ParameterDiscreteValue discreteVal = new ParameterDiscreteValue ();
    ParameterRangeValue rangeVal = new ParameterRangeValue ();// 第一个参数是具有多个值的离散参数。// 设置参数字段的名称,它必须
    //和报表中的参数相符。
    paramField.ParameterFieldName = "客户姓名";// 设置第一个离散值并将其传递给该参数。
    discreteVal.Value = "AIC Childrens";
    paramField.CurrentValues.Add (discreteVal);// 设置第二个离散值并将其传递给该参数。
    // discreteVal 变量被设置为新值,这样,以前的设置
    //就不会被覆盖。
    discreteVal = new ParameterDiscreteValue ();
    discreteVal.Value = "Aruba Sport";
    paramField.CurrentValues.Add (discreteVal);// 将该参数添加到参数字段集合。
    paramFields.Add (paramField);// 第二个参数为区域值。paramField 变量
    //被设置为新值,这样,以前的设置就不会被覆盖。
    paramField = new ParameterField ();// 设置参数字段的名称,它必须
    //和报表中的参数相符。
    paramField.ParameterFieldName = "客户 ID";// 设置范围的开始值和结束值并将该范围传递给
    //该参数。
    rangeVal.StartValue = 42;
    rangeVal.EndValue = 72;
    paramField.CurrentValues.Add (rangeVal);// 将第二个参数添加到参数字段集合。
    paramFields.Add (paramField);// 将参数字段集合放入查看器控件。
    crystalReportViewer1.ParameterFieldInfo = paramFields;[C++] 
    // 声明将参数传递给
    //查看器控件所需的变量。
    ParameterFields* paramFields = new ParameterFields ();
    ParameterField* paramField = new ParameterField ();
    ParameterDiscreteValue* discreteVal = new ParameterDiscreteValue ();
    ParameterRangeValue* rangeVal = new ParameterRangeValue ();// 第一个参数是具有多个值的离散参数。
    // 设置参数字段的名称,它必须
    //和报表中的参数相符。
    paramField->ParameterFieldName = "客户姓名";// 设置第一个离散值并将其传递给该参数。
    String* val = "AIC Childrens";
    discreteVal->Value = val;
    paramField->CurrentValues->Add (discreteVal);// 设置第二个离散值并将其传递给该参数。
    // discreteVal 变量被设置为新值,这样,以前的设置
    //就不会被覆盖。
    discreteVal = new ParameterDiscreteValue ();
    val = "Aruba Sport";
    discreteVal->Value = val;
    paramField->CurrentValues->Add (discreteVal);// 将该参数添加到参数字段集合。
    paramFields->Add (paramField);// 第二个参数为区域值。paramField 变量
    //被设置为新值,这样,以前的设置就不会被覆盖。
    paramField = new ParameterField ();// 设置参数字段的名称,它必须
    //和报表中的参数相符。
    paramField->ParameterFieldName = "客户 ID";// 设置范围的开始值和结束值并将该范围传递给
    //该参数。
    rangeVal->StartValue = __box(42);
    rangeVal->EndValue = __box(72);
    paramField->CurrentValues->Add (rangeVal);// 将第二个参数添加到参数字段集合。
    paramFields->Add (paramField);// 将参数字段集合放入查看器控件。
    crystalReportViewer1->ParameterFieldInfo = paramFields;crystalReportViewer1->ExportReport();