2011-07-29 45 views
1

我有一個包含用戶下拉的報表。我希望當前登錄的用戶被選爲默認值。SSRS 2008 R2:以編程方式設置下拉選擇值

該下拉列表具有UserId和UserName的值。我曾嘗試以下,但沒有運氣:

ReportViewer.ServerReport.SetParameters(new ReportParameter("SelectedUserId", CurrentUser.Id.ToString())); 

我可以用JavaScript做這個作爲最後的手段,但有沒有辦法做到這一點的服務器端?

感謝

更新:

用戶ID是用戶表的主鍵,而不是源自登錄的用戶名..這是你的建議是什麼?

沒有意識到我可以在那裏把查詢。我有CurrentUserId作爲內部參數,我正在使用它作爲填充下拉列表的SP的參數。

我用這個默認值設置爲:!=參數CurrentUserId.Value

它確實在Visual Studio中,並用默認CurrentUserId報表管理工作。然而在報告中CurrentUserId設置有:

ReportViewer.ServerReport.SetParameters(new ReportParameter("CurrentUserId", CurrentUser.Id.ToString())); 
這似乎太晚了它在下降被定了下來設置它

回答

0

得到它的工作:

步驟:

添加CurrentUserId作爲參數。

對於用戶下拉,默認設置爲:

=Parameters!CurrentUserId.Value 

然後在容器頁面:

ReportViewer.ServerReport.SetParameters(new ReportParameter("CurrentUserId", CurrentUser.Id.ToString())); 

在一個容器中運行之前時,這是不工作..但它現在是..

1

打開報表參數編輯表單,並設置用戶ID參數的默認值部分非查詢值:

=User!UserID 

注意,這是一個區分大小寫的比較:如果你的用戶ID列表是大寫字母,而您的網絡登錄名是小寫,參數值的查找將失敗。

此外,您的網絡登錄可能有一個域,它不會出現在您的用戶名列表中 - 如果是這樣,您將不得不刪除它。

例如,假設您的網絡登錄名是小寫字母,並且有一個域,並且用戶ID列表是大寫,並且沒有域。對於非查詢默認參數值,你會使用像表達式:

=Ucase(Replace(User!UserID, "MYDOMAIN\", "")) 
+0

謝謝。看到我上面的更新。 – Alistair

+0

當你說「當前登錄的用戶」,我以爲你的意思登錄到網絡。 –