Public Class CallBack2Client2Server
Inherits System.Web.UI.Page
Implements ICallbackEventHandler
Public Function GetCallbackResult() As String Implements System.Web.UI.ICallbackEventHandler.GetCallbackResult
Return _CallbackValue
End Function
Public Sub RaiseCallbackEvent(eventArgument As String) Implements System.Web.UI.ICallbackEventHandler.RaiseCallbackEvent
Using sw As New System.IO.StringWriter()
GridView.RenderControl(New HtmlTextWriter(sw))
_CallbackValue = sw.ToString()
End Using
End Sub
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If Not Page.IsCallback Then
ltrCallback.Text = ClientScript.GetCallbackEventReference()
End If
End Sub
End Class
Public Class CallBack2
Inherits System.Web.UI.Page
Implements ICallbackEventHandler
Private _Callback As String
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If Not Page.IsCallback Then
ltCallback.Text = ClientScript.GetCallbackEventReference(Me, "'bindgrid'", "EndGetData", "'gvคันหู'", False)
End If
End Sub
Private Function RetrieveDataTableFromDatabase() As DataTable
Dim t As New DataTable()
t.Columns.Add("Product", GetType(String))
t.Columns.Add("Price", GetType(Single))
t.Rows.Add("ปลากระป๋องตราสามหอย", 1500)
t.Rows.Add("อดสองมื้ออิ่มหนึ่งมื้อ", 100)
t.Rows.Add("ไม่ใช่แฟนเราก็ทำแทนได้", 3)
Return t
End Function
Public Function GetCallbackResult() As String Implements System.Web.UI.ICallbackEventHandler.GetCallbackResult
Return _Callback
End Function
ปล. ตัวอย่างดัดแปลงมาจาก ที่นี่ครับ
***** http://madskristensen.net/post/asynchronous-gridview-in-5-simple-steps
'มันเข้าครั้งเดียวตอน Binding
Protected Sub หอย_ItemCommand(source As Object, e As System.Web.UI.WebControls.RepeaterCommandEventArgs) Handles หอย.ItemCommand
Select Case e.CommandName
Case "Add"
For Each item As RepeaterItem In หอย.Items
Dim cb As CheckBox = item.FindControl("cbหอย")
If cb.Checked Then
'tmpKey, tmpValue
cb.Attributes.Add("tmpKey", True)
'เอาค่านี้แหละไปเทใส่อีกครั้งหนึ่งใน อีเวนต์ หอย_ItemCreated
End If
Next
End Sub
'มันเข้ามาทุกครั้งที่ PostBack
Private Sub หอย_ItemCreated(sender As Object, e As System.Web.UI.WebControls.RepeaterItemEventArgs) Handles หอย.ItemCreated
If ((e.Item.ItemType = ListItemType.Item) OrElse (e.Item.ItemType = ListItemType.AlternatingItem)) Then
Dim cb As CheckBox = item.FindControl("cbหอย")
cb.Checked = cb.Attributes("tmpKey") 'น่าจะมองภาพออกนะครับ ในกรณีที่ยังไม่ได้คำตอบที่พึงพอใจ +55555
End If
End Sub
โหลดมาแต่ละครั้ง มันจะเข้ามาอีเวนต์นี้เท่ากับ 10 x 3 = 30 ครั้ง (โอ้พระเจ้า)
Code (VB.NET)
'มันเข้ามาทุกครั้งที่ PostBack
Private Sub หอย_ItemCreated(sender As Object, e As System.Web.UI.WebControls.RepeaterItemEventArgs) Handles หอย.ItemCreated