|
|
Copyright © 2003-2009 By Suthep Sangvirotjanaphat |
|
|
|
Mobile: 089-967-2200, 081-915-7816 Phone: 0-2992-4877 Fax: 0-2992-4878 Fast Contact Us |
GreatFriends.Biz Community |
Custom Search
|
คืออยากจะทำให้มีการ show messagebox แบบให้มี ตอบ yes no คือ ตอนนี้ ที่ใช้อยู่คือ msgbox แต่ว่า บางที แทนที่มันจะขี้นมาอยู่ หน้า Page เพื่อให้ User เห็น บางทีมันเด้งมาจิง แต่ว่าไม่ขี้นมาโชว์อะคับ ไม่ทราบว่า การแจ้งเตือน ให้ ผุ้ใช้ กด Yes no หรือ กด อะไรก็ตาม เค้าใช้ Control ตัวไหนกันคับ
|
|
khiang |
วันที่ส่ง: 9 ต.ค. 50 09:12 GMT+7 วันที่ปรับล่าสุด: 10 ต.ค. 50 14:56 GMT+7 |
{
|
|
nano |
วันที่ส่ง: 9 ต.ค. 50 09:29 GMT+7 วันที่ปรับล่าสุด: 9 ต.ค. 50 09:29 GMT+7 |
ใช้ javascript ครับ เพราะ MessageBox มันจะปรากฎบน Server เสมอ เผอิญตอนเขียนโปรแกรมเครื่องที่เขียนเป็น Web server ในตัว ดังนั้นจึงเห็นว่ามี Messagebox ขึ้นมา (แต่บางทีก็โชว์เป็นแค่ Icon บน Taskbar)
|
|
jnithi |
วันที่ส่ง: 9 ต.ค. 50 09:29 GMT+7 วันที่ปรับล่าสุด: 9 ต.ค. 50 09:29 GMT+7 |

|
|
jnithi |
วันที่ส่ง: 9 ต.ค. 50 09:31 GMT+7 วันที่ปรับล่าสุด: 9 ต.ค. 50 09:31 GMT+7 |
คุณ nano คับ คือว่า ผม งงมากเลยคับ เคยทำแต่ win app ใช้
If (Not GridView1.SelectedIndex = -1) Then
Dim Po As String = GridView1.SelectedRow.Cells(1).Text Dim PoDelete As String = "Delete PO_BY where PO_BY ='" + Po + "'"conn.command(PoDelete)>>>>>>>>>>>>>>>>>>>>>>>>>>>>> บรรทัดนี้ ลบออกแล้วคับ
GridView1.DataBind()
End If|
|
khiang |
วันที่ส่ง: 9 ต.ค. 50 10:07 GMT+7 วันที่ปรับล่าสุด: 9 ต.ค. 50 10:07 GMT+7 |
Protected Sub GridView1_RowCreated(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles GridView1.RowCreated
If e.Row.RowType = DataControlRowType.DataRow Then
Dim _imgDel As ImageButton = CType(e.Row.FindControl("ImageButton1"), ImageButton)
_imgDel.Attributes.Add("onclick", "javascript:return confirm('คุณต้องการบันทึกข้อมูล ใช่หรือไม่???...');")
_imgDel.CommandArgument = e.Row.RowIndex.ToString()
End If
End Sub
Protected Sub GridView1_RowCommand(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewCommandEventArgs) Handles GridView1.RowCommand
If (e.CommandName.Equals("Img_Del")) Then
Dim ir As Integer = Convert.ToInt32(e.CommandArgument)
Dim PoDelete As String = "Delete PO_BY where PO_BY ='" + Po + "'"
conn.command(PoDelete)>>>>>>>>>>>>>>>>>>>>>>>>>>>>> บรรทัดนี้ ลบออกแล้วคับ
GridView1.DataBind()
End If
End Sub
GridView.RowCommand Event:
ศึกษาเพิ่มเติมจาก:> http://msdn2.microsoft.com/en-us/library/system.web.ui.webcontrols.gridview.rowcommand.aspx
|
|
nano |
วันที่ส่ง: 9 ต.ค. 50 11:17 GMT+7 วันที่ปรับล่าสุด: 9 ต.ค. 50 11:17 GMT+7 |
แบบว่าผมอยากทราบ ที่เกี่ยวกับ java script อ่าคับ ว่า เวลาจะ delete แล้ว มันมี dialog มาให้ตอบ yes หรือ no อ่ะคับ ว่าเราจะเช็คยังไงว่า เค้าตอบ yes หรือ no มาอะคับ
If (Not GridView1.SelectedIndex = -1) Then
Dim Po As String = GridView1.SelectedRow.Cells(1).Text Dim PoDelete As String = "Delete PO_BY where PO_BY ='" + Po + "'"conn.command(PoDelete)>>>>>>>>>>>>>>>>>>>>>>>>>>>>> บรรทัดนี้ ทำการลบข้อมูล
GridView1.DataBind()
End If|
|
khiang |
วันที่ส่ง: 9 ต.ค. 50 12:41 GMT+7 วันที่ปรับล่าสุด: 9 ต.ค. 50 12:41 GMT+7 |
ถ้าตอบ Yes ก็จะคืนค่ามาเป็น true ครับ นอกนั้นเป็น false หมด
|
|
SuperTee |
วันที่ส่ง: 9 ต.ค. 50 13:08 GMT+7 วันที่ปรับล่าสุด: 9 ต.ค. 50 13:08 GMT+7 |
|
|
nano |
วันที่ส่ง: 9 ต.ค. 50 13:43 GMT+7 วันที่ปรับล่าสุด: 9 ต.ค. 50 13:43 GMT+7 |
แล้วตัว btSave.Attributes.Add("onclick", "javascript:return confirm('คุณต้องการบันทึกข้อมูล ใช่หรือไม่???...');");
|
|
khiang |
วันที่ส่ง: 9 ต.ค. 50 15:53 GMT+7 วันที่ปรับล่าสุด: 9 ต.ค. 50 15:53 GMT+7 |
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If Not Page.IsPostBack Then
Button1.Attributes.Add(
"onclick", "javascript:return confirm('คุณต้องการข้อลบมูล ใช่หรือไม่???...');") End If
End Sub
|
|
nano |
วันที่ส่ง: 9 ต.ค. 50 18:34 GMT+7 วันที่ปรับล่าสุด: 9 ต.ค. 50 18:34 GMT+7 |
ขอถามคุณ nano อีกคับ ผม ตรง rep#5 นี่จะลบข้อมูล นี่ ผมต้องสร้าง ปุ่มมาเอง เลยหรอคับ แล้ว Delete ที่มาพร้อมกับ gridview นี่ ใช้ไม่ได้หรอคับ คือผมอยากกด Delete ที่มากับ gridview แล้วมีข้อความถาม อะคับ
|
|
khiang |
วันที่ส่ง: 10 ต.ค. 50 09:10 GMT+7 วันที่ปรับล่าสุด: 10 ต.ค. 50 09:10 GMT+7 |
Protected Sub GridView1_RowCreated(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles GridView1.RowCreated
Dim ctl As LinkButton
If e.Row.RowType = DataControlRowType.DataRow Then
ctl = e.Row.Controls(1).Controls(0)
ctl.Attributes.Add(
"onClick", "return confirm('Delete?');") End If End Sub
ถ้าเรากำหนด Button Type เป็นอย่างอื่นก็ไปแก้ที่ Dim ctl As LinkButton ให้เป็น Type เดียวกัน ทีนี้ถ้าดูที่บรรทัดนี้
ctl = e.Row.Controls(1).Controls(0)แสดงว่าคุณต้องรู้ครับว่า Command Field ของคุณอยู่ใน cell ที่เท่าไหร่ของ Gridview หรือเป็น Control ตัวที่เท่าไหร่ ในตัวอย่างนี้ cell แรก จะเก็บปุ่ม Select และ Cell ที่ 2 เป็นปุ่ม delete หลังจากนั้นจะเป็นจะเป็น column ของข้อมูลไปเรื่อยๆจนจบ ผมเลยใช้ e.Row.Controls(1) ครับ คือ Cell ที่ 2 จะมีค่า Index เป็น1
จะเห็นว่าค่อนข้างยุ่งยาก ถ้าจะเอาง่ายกว่านี้เราสามารถทำได้ โดยการเปลี่ยน Command Field ให้เป็น Template Field ครับ

โดยคลิ๊กที่วงรีสีแดง เพื่อเปลี่ยนให้เป็น Template Field ครับ (ตรงวงรีสีน้ำเงินด้านบนคือส่วนที่เรากำหนด Button Type ของ Command Field ที่บอกไปครับ ถ้าเปลี่ยนมาเป็น Template Field แล้วตรงนี้จะหายไป ไม่ต้องสนใจ)
เมื่อเปลี่ยนเป็น Template Field แล้วเรามาดูที่หน้า Source จะพบ
<asp:TemplateField ShowHeader="False">
<ItemTemplate> <asp:LinkButton ID="LinkButton1" runat="server" CausesValidation="False" CommandName="Delete" Text="Delete" OnClientClick="return confirm('Delete');"></asp:LinkButton> </ItemTemplate> </asp:TemplateField>
เราก็เพิ่ม OnClientClick="return confirm('Delete');" เข้าไปก็ใช้ได้แล้วครับ จะเห็นว่าง่ายกว่าเยอะถ้าเรามาใช้ Template Field โดย เราสามารถเปลี่ยนไปใช้ web control ได้เช่นกัน แทนที่จะใช้ Link Button ไปใช้เป็น Image Button ก็ได้ครับ
จากโค้ด javascript นะครับ return confirm('Delete'); หมายความว่าถ้า user กด cancel มันจะไปคือค่า false ให้ หรือมีค่าเท่ากับ event.returnValue = false แปลว่ายกเลิก event ไป ดังนั้นจะไม่มีการ Postback กลับไป web server ถ้า user กด ok มันจะคืนค่า true แปลว่าทำ event นั้นต่อ ก็คือ postback ไป web server
|
|
jnithi |
วันที่ส่ง: 10 ต.ค. 50 10:18 GMT+7 วันที่ปรับล่าสุด: 10 ต.ค. 50 10:18 GMT+7 |
ขอบคุณทุกท่านเลยนะคับ คุณnano คุณ Jnithi ที่มาช่วยไขข้อข้องใจคับ ผมอยากให้ช่วยอีกนิดนะคับผม
Protected Sub btnEditFinish_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnEditFinish.Click
Dim strEdit As String = "update USER_INFO set FNAME ='" + txtName.Text + "',LNAME ='" + txtSurname.Text + "',NICKNAME ='" + txtNickname.Text + "',DEP_CODE ='" + ddlDep.Text + "',SEC_CODE ='" + ddlSec.Text + "',PHONE ='" + txtPhone.Text + "',EMAIL = '" + txtEmail.Text + "' where USER_ID ='" + txtUser_Id.Text + "'"
conn.command(strEdit)
'Response.Write("<script language=javascript>") 'Response.Write("alert('ระบบได้ทำงานบันทึกข้อมูลเรียบร้อยแล้ว.......');") 'Response.Write("</script>")Response.Redirect(
"~/User Manage.aspx") End Sub
คือ โค๊ดด้านบนเนี่ยคับ มันเป็นปุ่ม ยืนยันการแก้ไขข้อมูล พอใช้ แบบนี้ แล้ว มันเปลี่ยนหน้า โดย User ไม่ทันเห็น Dialog อ่ะคับ
ผมอยากได้แบบ โชว์ Dialog ขี้นมาค้างไว้ให้เค้ากด Ok ถึง เปลี่ยน Page ไป หรือว่า อย่างน้อยก็มีการ หน่วงเวลาให้ User ได้เห็นอ่ะคับ ไม่ทราบจะทำได้ยังไงคับ ขอบคุณล่วงหน้าคับ
|
|
khiang |
วันที่ส่ง: 10 ต.ค. 50 10:38 GMT+7 วันที่ปรับล่าสุด: 10 ต.ค. 50 10:38 GMT+7 |
ทำไมใช้ Response.Redirect แล้วมันเปลี่ยนหน้าโดย user ไม่เห็น Dialog คำถามนี้ลองไปอ่านบทความ ASP.Net Page Navigation ก่อนครับ (แอบโปรโมต) บอกให้ก็ได้ครับ พอ browser เจอคำสั่ง response.redirect มันจะทำงานคำสั่งนี้ทันที ก็เลยไม่ทันได้ alert มันไปซะแล้ว
Dim sb As New StringBuilder
sb.Append("<script type='text/javascript' language='javascript'>")
sb.Append("alert('ระบบได้ทำงานบันทึกข้อมูลเรียบร้อยแล้ว.......');")
sb.Append("document.location ='Test.aspx';")
sb.Append("</script>")
Page.ClientScript.RegisterStartupScript(Page.GetType, "RedirectScript", sb.ToString)
แบบนี้พอ user กด OK ที่ alert แล้วถึงจะทำการ navigate ไปยังหน้าที่เรากำหนดครับ
|
|
jnithi |
วันที่ส่ง: 10 ต.ค. 50 11:56 GMT+7 วันที่ปรับล่าสุด: 10 ต.ค. 50 11:56 GMT+7 |
|
|
khiang |
วันที่ส่ง: 10 ต.ค. 50 13:01 GMT+7 วันที่ปรับล่าสุด: 10 ต.ค. 50 13:01 GMT+7 |

|
|
nano |
วันที่ส่ง: 10 ต.ค. 50 14:56 GMT+7 วันที่ปรับล่าสุด: 10 ต.ค. 50 14:56 GMT+7 |
|
เรียน .NET/OOAD กับ อ.สุเทพ (surrealist) Microsoft Most Valuable Professional (MVP): |
![]() ลงทะเบียนเรียน |