รบกวนสอบถามคำสั่ง javascript confirm yes no แล้วไปควบคุมใน Code behind ของ asp.net หน่อยครับ
ก่อนอื่นผมต้องบอกก่อนว่าผมไม่ค่อยเก่งเรื่อง javascript นะครับ ยังเป็นมือใหม่อยู่ครับ แต่พอดีลองเขียน asp.net แล้วมันไม่มี messagebox เลยลองหาข้อมูลจาก Google ดู ปรากฏว่าได้ code มาแบบนี้ครับ
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
<script type = "text/javascript">
function Confirm() {
var confirm_value = document.createElement("INPUT");
confirm_value.type = "hidden";
confirm_value.name = "confirm_value";
if (confirm("Do you want to save data?")) {
confirm_value.value = "Yes";
} else {
confirm_value.value = "No";
}
document.forms[0].appendChild(confirm_value);
}
</script>
</head>
<body>
<form id="form1" runat="server">
<asp:Button ID="btnConfirm" runat="server" OnClick = "OnConfirm" Text = "Raise Confirm" OnClientClick = "Confirm()"/>
</form>
</body>
</html>
ซึ่งมันดีกว่า Code confirm อื่นๆ ตรงที่สามารถไปควบคุมใน code behind ได้ครับ
Code behind จะเป็นแบบนี้
Code (VB.NET)
Protected Sub OnConfirm(sender As Object, e As EventArgs)
Dim confirmValue As String = Request.Form("confirm_value")
If confirmValue = "Yes" Then
ClientScript.RegisterStartupScript(Me.[GetType](), "alert", "alert('You clicked YES!')", True)
Else
ClientScript.RegisterStartupScript(Me.[GetType](), "alert", "alert('You clicked NO!')", True)
End If
End Sub
ข้อมูลนี้ได้มาจากเว็บนี้ครับ(ผมก๊อบเขามานะ อย่าว่าผมนะ ผมเด็กฝึกหัด-*-) http://aspsnippets.com/Articles/Server-Side-Code-Behind-Yes-No-Confirmation-Message-Box-in-ASPNet.aspx
แต่ข้อเสียของมันก็คือ มันใช้ตรง appendChild อ่ะครับ มันก็เลยเหมือนกับ + string เข้าไปเพิ่ม
จากการ Debug สังเกตว่าถ้าผมกดปุ่มไปมากกว่า 1 ครั้ง มันจะเป็นแบบนี้ครับ
สังเกตว่ามันจะไปเพิ่มครับ ไม่ได้เปลี่ยนแปลงค่า เพราะงั้นถ้าผมกด yes อีกที มันก็จะกลายเป็น No,No,Yes ซึ่งมันก็จะไม่เข้าเงื่อนไขอ่ะครับ
ผมขอบอกตรงๆ ซื่อๆเลยครับ .............ช่วยผมทีทีทีทีที
ปล.ก่อนผมจะตั้งกระทู้ ผมได้ลองพยายามหาวิธีแก้มาแล้วนะครับ แต่ก็ยังแก้ไม่ได้สักที ทั้งใช้ removechild หรืออื่นๆ มันก็ไม่ยอมลบค่าเดิมทิ้งก่อนใส่ค่าใหม่-*-
...อย่าลืม ผมไม่เป็น javascript นะครับ อย่าด่าผมนะ
ตอนนี้เบื้องต้นผมใช้วิธีแก้ไขแบบขอไปที คือ จัดการตัด string ซะดื้อๆ แบบนี้ครับ
confirmValue = Right(confirmValue, 3) ------- ตัด string จากตัวสุดท้ายมา 3 ตัว
confirmValue = confirmValue.Trim(CChar(",")) ---------- ถ้าเจอเครื่องหมาย "," ก็ ตัดทิ้ง
ผลลัพภ์ออกมาได้ผลครับ แต่ผมอยากได้แบบวิธีทำตั้งแต่ต้นทางอ่ะครับ
รู้ครับว่าปัญญาอ่อนที่ทำแบบนี้ รบกวนบอกวิธีที่ถูกต้องให้ผมได้บรรลุนิพพานด้วยนะครับ ขอบคุณทุกคนล่วงหน้าครับTag : .NET, Ms Access, JavaScript, Web (ASP.NET), VB.NET
Date :
2014-09-09 11:34:43
By :
smartiden
View :
3816
Reply :
3
***** ความต้องการของคุณไม่ธรรมดา***** อย่างน้อยฯ ก็คือสิ่งที่คิดและผมทำมาแล้ว
และผมกำลังทำอยู่ครับ (คุณไม่ได้ปัญญาอ่อนครับ )
ผมฝากให้คุณไปคิดต่อไปอีกว่า หน้าจอ รับ/จ่าย/ปรับปรุง/โอนย้าย/อื่นฯ (รวมถึงผ่านรายการไปยังระบบบัญชีสินค้าคงคลัง
โดยมีข้อแม้ว่า "ห้ามใช้จำนวน SourceCode เกิน 1,000 บรรทัด" มันสามารถทำได้หรือไม่? (ตอนนี้ผมใช้ไปแล้ว 439 บรรทัด และเสร็จสมบูรณ์ )
----
----
----
Good Luck.
ประวัติการแก้ไข 2014-09-09 13:34:41 2014-09-09 13:35:46 2014-09-09 13:42:23
Date :
2014-09-09 13:33:55
By :
หน้าฮี
ลองหา javascript ที่ใช้เช็คว่า มี element name ชื่อ confirm_value อยู่หรือยัง
ถ้ามีให้ลบ element นั้นไปก่อน แล้วค่อยสั่งให้สร้าง confirm_value ตัวใหม่ขึ้นมา
Date :
2014-09-09 15:33:13
By :
Aod47
Load balance : Server 04