亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

實現SQL2008 Reporting Service的表單驗證

系統 1879 0
?

??? ? 前提 :已有成功部署的 SQL2008 報表( 2005 也行,不過調的 webservice 可能不一樣,我直接從 2008 開始學的),并在 VS2005 下新建一個網站。

??? 完成功能: 今天看了蠟人張的博文 http://www.cnblogs.com/waxdoll/archive/2006/07/30/463114.html 得到啟發,簡單調試了一下,完成 SQL2008 Reporting Service 下的表單驗證。
?????
實現思路 :過程如下:用戶輸入用戶名、密碼 - 》通過數據庫驗證用戶 - 》若成功,則返回該用戶 Windows 下的身份憑證 - 》用返回的憑證登錄報表服務器 - 》返回報表項 - 》遍歷該用戶權限,若有讀權限,則在 treeview 上綁定一個節點 - 》驗證過程完畢!為簡單起見,我略去數據庫驗證這一環,要添上也非常簡單,建一個用戶表就行,不過里面要加上從當前用戶到windows用戶或組的映射,所謂映射其實就是讓該用戶名與windows用戶的帳戶、密碼做個對應,后面添加兩個字段就行。控制用戶權限時直接更該對應的windows用戶就行。
?????
過程截圖:

一、添加 web 引用, URL http://localhost/reportserver/reportservice2005.asmx?wsdl ,點擊添加引用。注意:此處地址跟蠟人張博文中的不一樣。有心情可以看下該 webservice 提供的方法,有的將會在以后的應用中用到。

?



二、在頁面上放上一個
Table 、兩個 TextBox 、一個 Button 、一個 Treeview 、一個 ReportViewer ,在此只做簡單介紹,故空間 ID 都不改了,大家在實際項目中可千萬要記得改。界面也不作修飾了,截圖如下。

?



三、進入代碼編輯界面,雙擊
Button 進入代碼編輯頁面,輸入如下代碼:

??? #region // 用戶登錄并更新樹

??? protected void Button1_Click( object sender, EventArgs e)

??? {

??????? // 實現接口ICredentials,在此可通過數據庫驗證用戶的登錄,并返回該用戶所映射到的windows帳戶、密碼,并以此帳戶、密碼登錄報表服務器,關鍵就在這

??????? ICredentials credentials = new NetworkCredential (TextBox1.Text,TextBox2.Text, "esint-9eb6bad34" );

??????? rs.Credentials = credentials;

??????? TreeView1.Nodes.Clear();

??????? try

??????? {

??????????? this .AddNodes( this .TreeView1.Nodes, "/" );

??????? }

??????? catch

??????? {

??????????? Response.Write( "<script>alert(' 您的登錄名或密碼有誤!')</script>" );

??????? }

??? }

#endregion

補充:需添加using引用: using System.Web.Services.Protocols; using System.Net;

四、添加方法AddNodes完成綁定樹節點的操作,代碼如下:

#region // 給樹添加節點

??? private void AddNodes( TreeNodeCollection tnc, string nodepath)

??? {

??????? // 返回所有報表項 的集合

??????? localhost. CatalogItem [] items = rs.ListChildren(nodepath, true );

??????? TreeNode tn = new TreeNode (); // 聲明一個空節點,存放文件夾節點

??????? for ( int i = 0; i <items.Length; i++)

??????? {

??????????? /* 返回該用戶的所有權限,管理員的權限項分別為:Create Folder、Delete、Read Properties、

???????????? * Update Properties 、Create Report、Create Resource、Create data source、Create Model、

???????????? * Read Security Policies 、Update Security Policies */

??????????? string [] perm = rs.GetPermissions(items[i].Path);?

?

??????????? // 添加節點,該方法只限于文件夾嵌套層次為一層的情況下

??????????? foreach ( string per in perm)

??????????? {

??????????????? // 判斷是否擁有度權限

??????????????? if (per == "Read Properties" )

??????????????? {

??????????????????? // 如果該項為文件夾

??????????????????? if (items[i].Type == localhost. ItemTypeEnum .Folder)

??????????????????? {

??????????????????????? tn = new TreeNode (items[i].Name, "folder" + items[i].Path, "folder.gif" , "" , "" );

??????????????????????? tnc.Add(tn);

????????? ??????????}

??????????????????? else if (items[i].Type == localhost. ItemTypeEnum .Report)

??????????????????? {

??????????????????????? // 在已添加的文件夾節點就愛如報表節點

??????????????????????? tn.ChildNodes.Add( new TreeNode (items[i].Name, "report" + items[i].Path, "report.gif" , "" , "" ));

??????????????????????? tn.Expanded = false ; // 設置文件夾節點初始為閉合狀態

??????????????????? }

??????????????? }

??????????? }

??????? }

??????? items = null ; // 清空項

??? }

#endregion

五、加入點擊樹的事件代碼:

#region // 完成點擊treeview的事件

??? protected void TreeView1_SelectedNodeChanged( object sender, EventArgs e)

??? {

??????? // 顯示報表

??????? if (TreeView1.SelectedNode != null )

??????? {

??????????? string type = TreeView1.SelectedNode.Value.Substring(0, 6);

??????????? if (type == "report" )

??????????? {

??????????????? this .ReportViewer1.Visible = true ;

??????????????? this .ReportViewer1.ProcessingMode = Microsoft.Reporting.WebForms. ProcessingMode .Remote;

??????????????? this .ReportViewer1.ServerReport.ReportServerUrl = new Uri ( "http://localhost/reportserver" );

??????????????? this .ReportViewer1.ServerReport.ReportPath = TreeView1.SelectedNode.Value.Substring(6);

??????????? }

??????? }

??? }

??? #endregion

六、預覽一下

前提說明:已創建了三個用戶,一個Administrator為管理員,ReportUser為用戶,有除AC目錄外的權限,ReportUser2為用戶,只有瀏覽目錄的權限。

首先管理員登錄,截圖如下:


然后用
ReportUser 登錄,截圖如下,看是不是沒有 AC 目錄了。



最后用
ReportUser2 登錄,該用戶只有瀏覽目錄的權限,所以目錄前面沒有加號。不好意思,忘了添加隱藏報表的語句了。

?


總結
:算是一個簡單教程吧,也是本人博客的開篇,以后學習過程中我將會把自己實現的一些比較有特點的功能跟大家做交流,如果大家有更好的方法,也希望能分享一下,畢竟我還剛開始學。博客園是個非常好的學習平臺,大家要好好利用。

?

?

嚴重建議博客園更改圖片插入功能,雖然功能很強大,但是我覺得大多數人都不會去用那些功能,只需簡單的能插入就行。更嚴重的是里面有太多的 JS 代碼,占用太多 CPU 資源。這個圖片上傳是不是另外又開了個 Socket ,像我這樣用代理的必然死瀏覽器,看來里面有技術問題。我第一次提交瀏覽器就死了,這是我第四次提交。

?

實現SQL2008 Reporting Service的表單驗證


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 国产热re99久久6国产精品 | 久久成人小视频 | 2046影院视频大全在线观看 | 99精品视频在线 | 就去色综合 | 四虎www免费人成 | 日日狠狠久久8888av | 欧洲黄色网 | 精品国产免费观看久久久 | 日韩欧美中文字幕在线视频 | 国产农村妇女毛片精品久久 | 日韩一区二区三区免费视频 | 天天夜夜骑| 成人免费观看一区二区 | 亚洲香蕉影院 | 女人夜色黄网在线观看 | 日本欧美一区二区三区在线观看 | 久久国产毛片 | 卡通动漫精选国产欧美 | 免费大片黄在线观看yw | 亚洲综合色就色手机在线观看 | 337p粉嫩大胆色噜噜噜 | 亚洲精品在线观看91 | 一级毛片网 | 久久er热这里只有精品免费 | 欧美成人精品高清在线播放 | 日日日夜夜操 | 亚洲欧美日韩国产精品久久 | 香蕉视频在线免费 | 毛茸茸的浓密在线视频 | 久久99亚洲综合精品首页 | 豆国产96在线 | 亚洲 | 狠狠色丁香久久婷婷综合_中 | 亚洲欧美日韩精品久久亚洲区 | 亚洲精品午夜级久久久久 | 色桃花网 | 中文字幕97 | 五月天亚洲婷婷 | 欧美成人精品在线 | 久久天堂视频 | 天天干天天操天天拍 |