Hi,
i am trying to multiple parameters fields (not multiple values). when i setcurrentvalues for second parameterfield the currentvalues for the first one gets lost. i found this from parameter panel in crystal report viewer. when i click edit parameter values in assigned list no values shown for first parameter field. sometimes displays "No error" alert.
My Code:
private void AddParameter(string fieldName, int parId)
{
string sParamName = "", sParamFieldName = "";
int colInd;
colInd = 0;
ISCRParameterField newParameterField = new ParameterFieldClass();
if (fieldName == "SUITENAME")
{
sParamName = "SuiteName";
sParamFieldName = "@default";
colInd = 4;
}
else if (fieldName == "GROUP1NAME")
{
sParamName = "Region";
sParamFieldName = "CSP_PROCESS_REPORT.GROUP1NAME";
colInd = 5;
}
else if (fieldName == "GROUP2NAME")
{
sParamName = "Group";
sParamFieldName = "CSP_PROCESS_REPORT.GROUP2NAME";
colInd = 6;
}
newParameterField.ParameterType = CrParameterFieldTypeEnum.crParameterFieldTypeReportParameter;
newParameterField.Name = sParamName;
newParameterField.ReportName = "";
newParameterField.Type = CrFieldValueTypeEnum.crFieldValueTypeStringField;
newParameterField.AllowMultiValue = true;
newParameterField.AllowCustomCurrentValues = true;
ISCRField existingParameterField;
string tmp = String.Empty;
RowsetMetaData rowsetMetaData = new RowsetMetaDataClass();
Fields fields = new FieldsClass();
ArrayList defaultValues = new ArrayList();
fields.Add(rcDoc.DataDefController.DataDefinition.ResultFields[colInd]);
rowsetMetaData.DataFields = (CrystalDecisions.ReportAppServer.DataDefModel.Fields)fields;
RowsetController rowsetController = rcDoc.RowsetController;
rowsetController.RowsetBatchSize = 10;
RowsetCursor rowsetCursor = rowsetController.CreateCursor(null, rowsetMetaData, 0);
do
{
Record record = rowsetCursor.CurrentRecord;
Record record1 = rowsetCursor.CurrentRecord;
if (!defaultValues.Contains((record[0] == null ? "" : record[0].ToString())))
{
defaultValues.Add((record[0] == null ? "" : record[0].ToString()));
newParameterField.DefaultValues.Add((record[0] == null ? "" : record[0].ToString()));
}
} while (rowsetCursor.MoveNext());
newParameterField.Usage = (int)CrParameterFieldUsageEnum.crParameterFieldUsageInUse;
newParameterField.IsEditableOnPanel = true;
newParameterField.IsShownOnPanel = true;
rcDoc.DataDefController.ParameterFieldController.Add((CrystalDecisions.ReportAppServer.DataDefModel.ParameterField)newParameterField);
rcDoc.DataDefController.SavedDataFilterController.SetFormulaText("{" + sParamFieldName + "} = {?" + sParamName + "}");
for (int x = 1; x < defaultValues.Count - 1; x++)
{
newParameterField.CurrentValues.Add(defaultValues[x].ToString());
rcDoc.DataDefController.ParameterFieldController.SetCurrentValues("", sParamName, newParameterField.CurrentValues);
}
}
Please Help me to retain Paramatervalues for multipleparams.
Regards,
Padmanaban V