最佳解答者
FormView的 ItemCreated事件,為何分頁之後,會出現兩次DataRow ?

問題
-
MSDN的範例 --第一次正常 分頁(跳去其他頁)就會錯
我檢查 FormView的 ItemCreated事件
發現有趣狀況第一次執行,結果是 DataRow
跳去其他頁,出現 "兩次" DataRow我想:如果能釐清這觀念,應該就能知道錯誤在哪裡?
<asp:FormView ID="FormView1" runat="server" AllowPaging="True"
DataKeyNames="id" DataSourceID="SqlDataSource1"
Width="640px"><ItemTemplate>
id:
<asp:Label ID="idLabel" runat="server" Text='<%# Eval("id") %>' />
<br />
title_A:
<asp:Label ID="titleLabel" runat="server" Text='<%# Bind("A") %>' />
<br />
</ItemTemplate></asp:FormView>
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:myTABLEConnectionString %>"
SelectCommand="SELECT top 10 [id], [A] FROM [myTABLE]">
</asp:SqlDataSource>Protected Sub FormView1_ItemCreated(sender As Object, e As System.EventArgs) Handles FormView1.ItemCreated
Dim FVrow As FormViewRow = FormView1.RowResponse.Write(FVrow.RowType.ToString() & "<br>")' 第一次執行,結果是 DataRow
' 跳去其他頁,出現 "兩次" DataRow ??? WHY ???
End SubThanks for your kind supports.
解答
-
第一次進到網頁的事後因為你用的是SQLDataSource所以自動做了一次DataBind,因而觸發了FormView的 ItemCreated,所以印了一次"DataRow"。
當你換頁的時候,因為POSTBACK,會自動觸發FormView的ItemCreated會先印出一次"DataRow"接著因為DataBind再多觸發一次ItemCreated,所以又印了一次"DataRow"。
不過你說MSDN的範例會有錯誤訊息,可能就得麻煩你把錯在哪一行或是錯誤訊息貼上來,大家會比較容易找到問題點。
以上說明若有錯誤請指教,謝謝。
http://www.dotblogs.com.tw/terrychuang/- 已提議為解答 MIS2000 Lab. _ 2011年8月26日 上午 10:17
- 已標示為解答 A.W. _ 2011年8月26日 上午 10:49
-
我沒能力回答您其他疑問,
但是針對MSDN網站 FormView的 Row屬性
這個範例我做過。
MSDN的範例 --
把事件改成 DataBound就沒有問題了。
也不會出現您說的「點選其他頁,會出現 "兩次" DataRow」
試試看。
我的書 與 ASP.NET教學網站 http://www.dotblogs.com.tw/mis2000lab/- 已標示為解答 A.W. _ 2011年8月26日 上午 10:50
所有回覆
-
那個是列舉,出現DataRow會很奇怪嗎?
http://msdn.microsoft.com/zh-tw/library/system.web.ui.webcontrols.formviewrow.rowtype.aspx
跳去其它頁 <-- 這個是什麼意思?
-
那個是列舉,出現DataRow會很奇怪嗎?
http://msdn.microsoft.com/zh-tw/library/system.web.ui.webcontrols.formviewrow.rowtype.aspx
跳去其它頁 <-- 這個是什麼意思?
謝謝您的回答我的意思是:按下 FormView底下的頁數
跳去其他頁
MSDN這個範例就會報錯我不能理解:為何第一頁會出現一次 DataRow
而跳去其他頁數,就會出現兩個 DataRow呢?畫面上只有一個 ItemTemplate樣板,理論上只會出現一次 DataRow
-
跟只有一個ItemTEmplate沒關係
當您點選分頁按鈕再postback時
事件執行順序
FormView1_ItemCreated→Page_Load→FormView1_ItemCreated
所以才會出現兩次DataRow
您可以自行下中斷點用偵錯模式(按F5)看看就知道了
Shadowと愉快なコード達
謝謝您的回答為什麼 PostBack時,ItemCreated事件會重複執行兩次呢?
FormView1_ItemCreated→Page_Load→FormView1_ItemCreated
我以為PostBack時
應該是Page_Load→FormView1_ItemCreated而已Thanks.
-
第一次進到網頁的事後因為你用的是SQLDataSource所以自動做了一次DataBind,因而觸發了FormView的 ItemCreated,所以印了一次"DataRow"。
當你換頁的時候,因為POSTBACK,會自動觸發FormView的ItemCreated會先印出一次"DataRow"接著因為DataBind再多觸發一次ItemCreated,所以又印了一次"DataRow"。
不過你說MSDN的範例會有錯誤訊息,可能就得麻煩你把錯在哪一行或是錯誤訊息貼上來,大家會比較容易找到問題點。
以上說明若有錯誤請指教,謝謝。
http://www.dotblogs.com.tw/terrychuang/- 已提議為解答 MIS2000 Lab. _ 2011年8月26日 上午 10:17
- 已標示為解答 A.W. _ 2011年8月26日 上午 10:49
-
MSDN的範例 --第一次正常分頁(跳去其他頁)就會錯錯誤訊息並未將物件參考設定為物件的執行個體
錯誤發生在這裡
' Set the ToolTip property of the data row.
row.ToolTip = rowView("FirstName").ToString() & " " & rowView("LastName").ToString()
Thanks. -
我沒能力回答您其他疑問,
但是針對MSDN網站 FormView的 Row屬性
這個範例我做過。
MSDN的範例 --
把事件改成 DataBound就沒有問題了。
也不會出現您說的「點選其他頁,會出現 "兩次" DataRow」
試試看。
我的書 與 ASP.NET教學網站 http://www.dotblogs.com.tw/mis2000lab/- 已標示為解答 A.W. _ 2011年8月26日 上午 10:50