2011-09-11 76 views
6

我想獲取用戶名的參數並用會話的用戶名替換它的值,以便我可以傳遞給DRL中的存儲過程以使用此用戶名生成表時間戳。 參數「username」是RDL的默認值的參數之一,我試圖用下面的代碼對其進行更改。以編程方式使SSRS設置參數導致狀態ValidValueMissing

更換ReportParameters之一:

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); 

運行報告後,我得到的消息「 '用戶名'參數缺少值「

當我調試並看看ServerReport.GetParameters()我可以看到我有ReportParameter「用戶名」,我確實有值(新值),但它的狀態是「MissingValidValue」。

我在做什麼錯? 由於提前, 埃迪

+0

看起來有一個名爲ValidValues的成員,其當前用戶名值和另一個名爲values的成員是空的。 –

回答

6

我終於設法解決這個問題,感謝這篇文章:http://technet.microsoft.com/en-us/library/dd220464.aspx

如果您已經爲參數指定可用值,有效 值總是顯示爲一個下拉列表。例如,如果您爲DateTime參數提供了 可用值,則日期 的下拉列表將顯示在參數窗格中,而不是日曆控件。爲確保 報表和子報表中值的列表一致,您可以在數據源上設置一個選項,以便在與數據源關聯的數據集中對所有查詢使用單個事務處理 。

由於我在「可用值」選項中輸入了默認值,除了將其置於「默認值」之外,報告試圖驗證新會話用戶名,該用戶名未被列爲「可用值」。一旦我刪除了「可用值」中的值,我在代碼隱藏中提供的新ReportParameter就不必驗證,並且報告成功呈現。

相關問題