ユーザー名のパラメーターを取得し、その値をセッションのユーザー名に置き換えて、DRL内のストアドプロシージャに渡して、このユーザー名でテーブルのタイムスタンプを生成できるようにしようとしています。パラメータ「username」は、デフォルト値が付属しているRDLのパラメータの1つであり、次のコードで変更しようとしています。
ReportParametersの1つを置き換える:
var userParameter = GetUserParameter();
if (userParameter != null)
{
newParameters.Remove(newParameters.FirstOrDefault(param => param.Name.Contains(CurrentUserParameterName)));
newParameters.Add(userParameter);
}
ユーザー名ReportParametersの検索:
var paremeters = ReportViewer.ServerReport.GetEditableHiddenParameters();
//finds parameter by its name, pelase view const value in CurrentUserParameterName
var userParameter = paremeters.FirstOrDefault(param => param.Name.Contains(CurrentUserParameterName));
if (userParameter != null)
{
userParameter.Values.Clear();
userParameter.Values.Add(Utils.GetUserName());
}
return userParameter;
パラメータをServerReportに設定します。
ReportViewer.ServerReport.SetParameters(parameters);
レポートを実行した後、「'username'パラメーターに値がありません」というメッセージが表示されます。
デバッグして調べるとServerReport.GetParameters()
、ReportParameter "username"があり、値(新しい値)がありますが、その状態は"MissingValidValue"です。
私は何が間違っているのですか?よろしくお願いします、エディ