6

ユーザー名のパラメーターを取得し、その値をセッションのユーザー名に置き換えて、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"です。

私は何が間違っているのですか?よろしくお願いします、エディ

4

1 に答える 1

6

この記事のおかげで、私はついにこの問題を修正することができました:http ://technet.microsoft.com/en-us/library/dd220464.aspx

パラメータに使用可能な値を指定した場合、有効な値は常にドロップダウンリストとして表示されます。たとえば、DateTimeパラメータに使用可能な値を指定すると、カレンダーコントロールではなく、日付のドロップダウンリストがパラメータペインに表示されます。値の一覧がレポートとサブレポート間で一貫していることを確認するために、データソースにオプションを設定して、データソースに関連付けられているデータセット内のすべてのクエリに単一のトランザクションを使用できます。

「デフォルト値」に加えて「使用可能な値」オプションにデフォルト値を入力したため、レポートは「使用可能な値」としてリストされていない新しいセッションのユーザー名を検証しようとしました。「使用可能な値」の値を削除すると、コードビハインドで提供する新しいReportParameterを検証する必要がなくなり、レポートが正常にレンダリングされました。

于 2011-09-14T11:39:04.603 に答える