 |
|
|
 |
 |
|
ปกติไม่หายนะ เพราะมันมี viewstate
ตกลง portback หรือ redirect
|
 |
 |
 |
 |
Date :
2010-07-09 16:06:33 |
By :
tungman |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
อืมๆ เข้าใจแระ
สงสัย table มันถูกสร้างตอน page load สงสัยมันจะหายแหละ
เพราะได้มีการ new instance ใหม่
|
 |
 |
 |
 |
Date :
2010-07-09 16:09:51 |
By :
tungman |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ใช่อ่ะครับ มันต้องสร้าง ตารางใหม่ เมื่อเกิด postback ครับมีวิธีเก็บค่า textbox ในตารางไหมครับ
|
 |
 |
 |
 |
Date :
2010-07-09 16:18:20 |
By :
zicxnals |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
หายครับ คงต้องให้ user กรอกข้อมูลทีหลังเลือก dropdownlist แล้วครับ
เพราะข้อมูลที่กรอกไปมันอยู่ใน memory ยังไม่ได้ถูกจัดเก็บไว้ที่ไหนเลย
จะใช้ viewstate ก็ไม่ได้เพราะ control สร้างแบบ dynamic ไว้
|
 |
 |
 |
 |
Date :
2010-07-09 16:23:02 |
By :
tungman |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
Code (VB.NET)
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If (Not Page.IsPostBack) Then
' เอา code การเชื่อมต่อกะ database ไว้ที่นี่ค่ะ
' ทีนี้ PostBack จะไม่มีการ init อะไรใหม่ละ
End If
End Sub
อ้างอิงจาก ASP.NET PAGE LIFE CYCLE ค่ะ
แบบ Advanceทำทีเดียวจบปัญหาก้อไป override Page มาเลยค่ะ
อันนี้ที่ไปตอบที่ greatefriendz
Code (VB.NET)
Public Class myBasePage : Inherits System.Web.UI.Page
Public Event OnPostBack (Byval Object Sender ,Byval e As System.EventArgs)
Public Event OnPageLoadAtOnce (Byval Object Sender ,Byval e As System.EventArgs)
'จะทำงานที่ event ไหนก็ Overide Event นั้นมาเลย สำคัญว่า อย่าลืมเอา Event chain >> MyBase.XXX เก็บเอาไว้ด้วยค่ะ
'เพราะจะเป็นส่วน ส่งต่อการ execute ไปยัง object ที่ inherit ต่อไปด้วยอะค่ะ
Protected Overrides Sub OnLoad(ByVal e As System.EventArgs)
RaiseEvent OnPostback (Me ,e)
if (Not Page.IsPostBack) Then
RaiseEvent OnPageLoadAtOnce (Me ,e)
End
MyBase.OnLoad(e) ' << Child Page and Parent class drived event here
End Sub
Protected Overrides Sub OnInit(ByVal e As System.EventArgs)
if Not (Session("CURRENT_THEME") is Nothing) Then
Page.Theme = Session("CURRENT_THEME").ToString()
End if
MyBase.OnInit(e)
Sub
End Class
Code (VB.NET)
'ทีนี้ ใน Page ของเราเช่น DEFAULT.ASPX นะคะ ส่วน Code behide จะเป็นยังงี้
Partial Class _Default : Inherits myBasePage
Protected Sub Page_OnPostBack (ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.OnPostback
'..... code
End Sub
Protected Sub Page_OnLoadAtOnce (Byval Object Sender ,Byval e As System.EventArgs) Handles Me.OnPageLoadAtOnce
'..... code
End Sub
End Class
|
 |
 |
 |
 |
Date :
2010-07-09 16:33:18 |
By :
blurEyes |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
Protected Sub Page_OnLoadAtOnce (Byval Object Sender ,Byval e As System.EventArgs) Handles Me.OnPageLoadAtOnce
เขียนคำสั่งสร้างตารางไว้ในนี้หรือครับ แล้ว dotnet จะเก็บ viewstate ให้ใช่ป่าวครับ
ปล. ตอบกระทู้แบบนี้ท่าน tungman อายนาครับ อิๆ
|
 |
 |
 |
 |
Date :
2010-07-11 02:15:55 |
By :
อิๆ |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ครัยอายคะ ทำไมต้องอาย
ปัญหามีทางแก้มากกว่าหนึ่งวิธีอยู่แล้วค่ะ
|
 |
 |
 |
 |
Date :
2010-07-11 03:24:41 |
By :
blurEyes |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ไม่อายหรอก ผมหน้าด้าน
แต่ login มาเจอกันเลยดีกว่า ผมไม่ชอบอีแอบ อิๆ
|
 |
 |
 |
 |
Date :
2010-07-11 08:58:13 |
By :
tung |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ใช่ครับ ผมเขียนโค๊ดให้สร้างตารางขึ้นมาเอง ตัวอย่างที่คุณ stupid gurl ให้มาผม งง ครับ เทพไปอ่ะ
|
 |
 |
 |
 |
Date :
2010-07-12 08:13:59 |
By :
zicxnals |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ใช่ครับไม่ได้ bind มาจาก database อ่ะครับ
ปัญหาที่หนึ่งคือ พอ autopostback แล้ว ตารางที่ gen มาตั้งแต่แรกหายไป ระบุ textbox ไม่ได้
ปัญหาที่สองคือ จะเก็บค่าที่ข้อมูลที่พึ่งกรอกไปยังไง เมื่อ autopostback แล้วไม่รู้จะเอาค่าไหนมาเก็บเพราะตาราง
หายไปกำหนดค่าที่ textbox ที่กรอกไปไม่ได้
พอเข้าใจไหมครับ
|
 |
 |
 |
 |
Date :
2010-07-12 09:01:08 |
By :
zicxnals |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
เข้าใจตั้งแต่แรกแล้ว
แต่คาดไม่ถึงว่าจะหนักกว่าที่คิด นี่ตารางหายไปด้วยเหรอ
มันหายก็เพราะว่าคุณสร้าง ตารางใน event button click
แต่พอคุณเลือก dropdownlist แล้ว postback มันก็ไม่ได้รัน event นั้น
ฉะนั้นมันก็หาย
ส่วนวิธีแก้ให้ศึกษาเรื่อง page life cycle ให้ดีๆ ตามด้านบนๆ นั่นแหละ
|
 |
 |
 |
 |
Date :
2010-07-12 09:22:48 |
By :
tungman |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ใช้วิธีนี้ดีกว่า
เอา panel ครอบไว้แล้ว set visible เอา ไม่ต้องสร้างแบบ dynamic หรอก
แบบนี้ใช้ viewstate ได้ด้วย เวลากรอกใส่ textbox แล้ว postback จะได้ไม่หาย
|
 |
 |
 |
 |
Date :
2010-07-12 09:34:19 |
By :
tungman |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
อ่ะครับ จะลองดูครับ น่าจะเป็นวิธีการที่ดีที่สุด
|
 |
 |
 |
 |
Date :
2010-07-12 09:56:45 |
By :
zicxnals |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
|