2011-09-11 16 views
6

ユーザー名のパラメータを取得し、その値をセッションのユーザー名に置き換えようとしているため、このユーザー名でテーブルのタイムスタンプを生成するためにDRL内のストアドプロシージャに渡すことができます。 。 パラメータ "username"は、デフォルト値が付いているRDLのパラメータの1つで、次のコードで変更しようとしています。 「SSRSがプログラムでパラメータを設定してValidValueMissing状態にする

ReportViewer.ServerReport.SetParameters(parameters); 

レポートを実行した後、私はメッセージを取得する:

var userParameter = GetUserParameter(); 
if (userParameter != null) 
{ 
    newParameters.Remove(newParameters.FirstOrDefault(param => param.Name.Contains(CurrentUserParameterName))); 
    newParameters.Add(userParameter); 
} 

検索ユーザ名ReportParameters:ServerReportへ

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; 

設定パラメータ

ReportParametersの1の交換'username'パラメータに値がありません "

ServerReport.GetParameters()をデバッグして見ると、私はReportParameter "username"を持っていることがわかりますが、私は値(新しい値)を持っていますが、Stateは "MissingValidValue"です。

私は間違っていますか?事前に おかげで、 エディ

+0

のように、現在のユーザー名の値を持つValidValuesという名前のメンバーと、空のvalueという名前のメンバーがあるようです。 –

答えて

6

私は、この問題をこの記事への感謝を修正するために最終的に管理している:http://technet.microsoft.com/en-us/library/dd220464.aspx

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

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

関連する問題