錯誤訊息:
無效的回傳或回呼引數。已在組態中使用 <pages enableEventValidation="true"/>
或在網頁中使用 <%@ Page EnableEventValidation="true" %> 啟用事件驗證。
基於安全性理由,這項功能驗證回傳或回呼引數是來自原本呈現它們的伺服器控制項。
如果資料為有效並且是必需的,請使用
ClientScriptManager.RegisterForEventValidation 方法註冊回傳或回呼資料,
以進行驗證。
實測解答:
這個問題常遇到!
請檢查 Page_Load裡面在BindData的程式是不是沒有加上 if(!IsPostback)
尤其是在gridview裡面有控制項的功能時...
不需要每次都binddata,只要non postback作一次就可以了
2011年3月13日 星期日
2011年2月15日 星期二
ASP.NET 3.5 + Crystal Report
狀況一:系統找不到指定的檔案。
錯誤訊息:在指定dataset 給CrystalReportSource1 的這一行
Me.CrystalReportSource1.ReportDocument.SetDataSource(ds)
狀況二:
登入失敗。細目: crdb_adoplus : 並未將物件參考設定為物件的執行個體檔案 C:\DOCUME~1\chenyu\LOCALS~1\Temp\rpOrderRpt {BF7D59DE-BDB8-4F0E-9875-2B9470BDBEB6}.rpt 錯誤: 無法連接: 登入參數錯誤
這個問題的話,我知道為什麼,但不知道該怎麼改,
狀況二就是只要資料庫連線資料是寫在function裡,總之不跟程式同一個頁面的話,例如我把去資料庫抓資料的程式全部寫在GetReport.GetReportA的function裡傳回datatable,
然後在產生報表的程式把datatable傳回,這樣就會出現上面的錯誤訊息了,
DTA = GetReport.GetReportA(Me.txtFromDate.Text, Me.txtToDate.Text).Copy
不知道是什麼問題,我有試著把連線字串宣告的區域變大,不過似乎不是這個問題,
只好繼續找方法囉!
如果有試出來再發文囉!
2/16更新:
狀況二已經試出來了,
跟什麼連線字串的宣告變數無關啦,之前確實推斷錯誤,
剛試出來的結果:
新建的dataset中無論是DataTable或是TableAdapter,名稱要與資料庫的tableName一樣,否則就會出現狀況二的錯誤訊息,
只要改成跟資料庫的tableName一樣,無論是DataTable或是TableAdapter都不會有問題,再者,資料表的欄位可以不用一樣也沒關係。
以上就是目前的解決方案,
但還是覺得不方便,我就是想跟資料庫的tableName不一樣不行嗎?呵呵
繼續測試囉,有新發現再po上來喔!!
2/17更新
狀況三:
Crystal Report頁面按下一頁或是匯出報表都會出現像狀況二那樣的問題。
因為按下一頁或是匯出,都是觸發page_load,
所以目前我是在page_load的時候,再呼叫一次產生報表的程式,這樣就可以了,
但還是覺得這個方法有點…不太好…所以想到再po上來囉!!
資料來源:自己測試及參考
http://social.msdn.microsoft.com/Forums/zh-TW/236/thread/83b8206d-c4b0-4f62-8725-365f5b7b1ebc
http://www.blueshop.com.tw/board/FUM20041006161839LRJ/BRD201102141042154LH.html
錯誤訊息:在指定dataset 給CrystalReportSource1 的這一行
Me.CrystalReportSource1.ReportDocument.SetDataSource(ds)
我應該最近寫程式有點鬼打牆了,明明就這樣寫就好,怎麼一直在那邊轉圈圈啊!! 哈哈哈
目前整理出的寫法:
先在頁面上放一個CrystalReportViewer1,就可以開始寫了,但我不知道crystalreportSource該怎麼用。Dim sCN0 As String = "資料庫連線字串"
Dim commandText As String = "資料庫查詢語法"
Dim da As SqlDataAdapter = New SqlDataAdapter(commandText, sCN0)
'建立一個 DataSet 物件。如果要塞入一個實體的dataset ,名稱一定要打對喔!!
' 例如我新增的一個叫做dsReport的dataset,它的datatable叫做dt_rpt
Dim ds As dsReport = New dsReport()
da.Fill(ds, "dt_rpt")
' 這個crystal report的路徑要注意,如果你的程式是放在資料夾下的話,它會認為你的crystalReport也是在同個路徑喔!!
'所以記得放對地方
'我記得我在寫windows form 的時候不用指定路徑啦,但不知道為什麼asp.net要
Dim rptFile = Server.MapPath("rpOrderRpt.rpt")
Dim doc As New ReportDocument
doc.Load(rptFile)
''將dataset指定為ReportDocument的setDatasource
doc.SetDataSource(ds)
Me.CrystalReportViewer1.ReportSource = doc
狀況二:
登入失敗。細目: crdb_adoplus : 並未將物件參考設定為物件的執行個體檔案 C:\DOCUME~1\chenyu\LOCALS~1\Temp\rpOrderRpt {BF7D59DE-BDB8-4F0E-9875-2B9470BDBEB6}.rpt 錯誤: 無法連接: 登入參數錯誤
這個問題的話,我知道為什麼,但不知道該怎麼改,
狀況二就是只要資料庫連線資料是寫在function裡,總之不跟程式同一個頁面的話,例如我把去資料庫抓資料的程式全部寫在GetReport.GetReportA的function裡傳回datatable,
然後在產生報表的程式把datatable傳回,這樣就會出現上面的錯誤訊息了,
DTA = GetReport.GetReportA(Me.txtFromDate.Text, Me.txtToDate.Text).Copy
不知道是什麼問題,我有試著把連線字串宣告的區域變大,不過似乎不是這個問題,
只好繼續找方法囉!
如果有試出來再發文囉!
2/16更新:
狀況二已經試出來了,
跟什麼連線字串的宣告變數無關啦,之前確實推斷錯誤,
剛試出來的結果:
新建的dataset中無論是DataTable或是TableAdapter,名稱要與資料庫的tableName一樣,否則就會出現狀況二的錯誤訊息,
只要改成跟資料庫的tableName一樣,無論是DataTable或是TableAdapter都不會有問題,再者,資料表的欄位可以不用一樣也沒關係。
以上就是目前的解決方案,
但還是覺得不方便,我就是想跟資料庫的tableName不一樣不行嗎?呵呵
繼續測試囉,有新發現再po上來喔!!
2/17更新
狀況三:
Crystal Report頁面按下一頁或是匯出報表都會出現像狀況二那樣的問題。
因為按下一頁或是匯出,都是觸發page_load,
所以目前我是在page_load的時候,再呼叫一次產生報表的程式,這樣就可以了,
但還是覺得這個方法有點…不太好…所以想到再po上來囉!!
資料來源:自己測試及參考
http://social.msdn.microsoft.com/Forums/zh-TW/236/thread/83b8206d-c4b0-4f62-8725-365f5b7b1ebc
http://www.blueshop.com.tw/board/FUM20041006161839LRJ/BRD201102141042154LH.html
2011年2月10日 星期四
VS 2008 SP1連線遠端資料庫,發生錯誤訊息
使用vs 2008 sp1連線遠端資料庫時,(本機資料庫不會喔!)發生以下錯誤訊息
看了網路上的文章是說安裝下列檔案:
安裝如下連結檔案:
1. Microsoft SQL Server System CLR Types
http://go.microsoft.com/fwlink/?LinkId=123721&clcid=0x409
2. Microsoft SQL Server 2008 Management Objects
http://go.microsoft.com/fwlink/?LinkId=123708&clcid=0x409
3. Microsoft SQL Server 2008 Native Client
http://go.microsoft.com/fwlink/?LinkId=123717&clcid=0x409
結果:我只安裝了2、3點的檔案就可以了囉!!
我想是第1點我在本機安裝資料庫時可能就有安裝了,所以就不用裝了。
但是可能因為我本機的資料庫是SQL SERVER 2005的版本,而是用VS 2008 SP1
開發,所以可能缺少2、3點SQL SERVER 2008的元件,
但沒有試過用VS 2008 SP1連SQL SERVER 2008看這樣還會不會出現問題,
這倒是可以試試看。
2/14 用vs 2008連SQL SERVER 2008的資料庫,確實不會出現上面的錯誤訊息,
所以上面的推斷應該是正確的喔!!
參考資料:http://tw.myblog.yahoo.com/carlo-blog/article?mid=705
2011年2月8日 星期二
AjaxControlToolkit 版本3.5,可能有問題啦???????????????
使用vs 2008開發AJAX,出現了下列的錯誤訊息:
錯誤: AjaxControlToolkit requires ASP.NET Ajax 4.0 scripts. Ensure the correct version of the scripts are referenced. If you are using an ASP.NET ScriptManager, switch to the ToolkitScriptManager in AjaxControlToolkit.dll.
想說是vs 2008,所以我使用的AjaxControlToolkit.dll的版本是 3.5.40412.0
但沒想到出現這樣的錯誤訊息,所以我就將AjaxControlToolkit.dll的版本降為 3.0.30930就可以用了,會是3.5的版本不穩定嗎?????????
資料來源:自己測試。
錯誤: AjaxControlToolkit requires ASP.NET Ajax 4.0 scripts. Ensure the correct version of the scripts are referenced. If you are using an ASP.NET ScriptManager, switch to the ToolkitScriptManager in AjaxControlToolkit.dll.
想說是vs 2008,所以我使用的AjaxControlToolkit.dll的版本是 3.5.40412.0
但沒想到出現這樣的錯誤訊息,所以我就將AjaxControlToolkit.dll的版本降為 3.0.30930就可以用了,會是3.5的版本不穩定嗎?????????
資料來源:自己測試。
AJAX 錯誤訊息。「作業無法完成。無效的FORMATETC結構」
好久沒使用AJAX了,今天因為在修改一個系統,所以就想說用AJAX,將AJAX ToolKit的控制項拖拉到畫面也不行,在原始碼上放的話,結果竟然出現下列訊息:
最好只好「重設工具箱」,將AjaxControlToolkit.dll重新加入,就可以正常使用啦…真是奇怪呢?
2011年1月31日 星期一
MCTS 70-431
好開心喔
之前已經把70-431考試的書買好了,一直都沒時間去考,最近才又開始準備,
昨天1/30去考 ,ya…我考過了,
超緊張的啦!!
不過今天在微軟的論壇看到這個不幸的消息啊!!
http://social.technet.microsoft.com/Forums/zh-TW/2014/thread/a0c14544-f968-484b-be7f-05230c40fde7
不知道證照會不會就跟著失效了
之前已經把70-431考試的書買好了,一直都沒時間去考,最近才又開始準備,
昨天1/30去考 ,ya…我考過了,
超緊張的啦!!
不過今天在微軟的論壇看到這個不幸的消息啊!!
SQL Server 2005, Visual Studio 2005 與 BizTalk 2006 系列考試將要在 2011/6/30 停考
http://social.technet.microsoft.com/Forums/zh-TW/2014/thread/a0c14544-f968-484b-be7f-05230c40fde7
不知道證照會不會就跟著失效了
2011年1月25日 星期二
在VM 中使用電腦名稱會產生解析錯誤
今天在VM中測試防毒軟體小紅傘,突然發現無法使用電腦名稱連到遠端電腦,如\\sales,這樣會出現錯誤訊息,且在命令列 tracert sales時,會出現解析錯誤,
但是如果用\\192.168.0.x(IP)就可以,本以為是小紅傘的問題,結果我在本機裝小紅傘竟然不會,結果才發現是VM設定的問題(連Virtual PC也是一樣)。
後來試著將網卡的模式從NAT改成Bridge,然後在vm中指定一組ip給它,再試一次用\\salles,這樣就可以了,tracert 也正常,也不會出現解析錯誤了,
但明明都ping 的到,(改成Bridge模式,也沒指定DNS給它)
為什麼更改網卡模式(從NAT改成Bridge)就行了呢?
還是bridge有支援電腦名稱的解析,而NAT沒有呢?
自己測試
訂閱:
文章 (Atom)