mehdi58
سه شنبه 23 خرداد 1385, 11:18 صبح
سلام
من برای اینکه بتونم از Confirm استفاده کنم کد زیر رو نوشتم :
<script language="javascript">
function viewConfirm()
{
return confirm('my Message');
}
</ script >
و همچنین :
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Button1.Attributes.Add("Onclick", "return viewConfirm();")
End Sub
اما مشکلی که با این روش داشتم این بود که وقتی صفحه واسه اولین بار Load میشد و اولین مرتبه روی دکمه کلیک می کردم کادر پیغام ظاهر نمی شد اما واسه کلیکهای بعدی این اتفاق نمی افتاد و درست کار می کرد !!!!!
سوال 1 ) چرا این اتفاق می افته ؟ آیا مشکل از Browser هست یا از Code؟
بدون اینکه به جواب سوال بالا برسم از روش زیر استفاده کردم :
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
'************************************************* *********************
Response.Write("<script language='javascript'> confirm('my Message')</script>")
'************************************************* *********************
' another code '************************************************* *********************
'Dim strJ As New System.Text.StringBuilder("")
' strJ.Append("<script language='javascript'>")
' strJ.Append("var ok = confirm('Are you sure?');")
' strJ.Append("if (ok) {document.submit();}")
' strJ.Append("</script>")
'Response.Write(strJ.ToString())
End Sub
که با استفاده از هر دو روش مشکلم حل شد .
سوال دوم ) اما این مشکل بزرگ من هنوز حل نشده و امیدوارم یکی واضح بگه که جوابش چی میشه .
من میخوام وقتی کاربر روی Button کلیک کرد ابتدا یه پیغام ظاهر بشه مبنی بر اینکه آیا تمایل داره عملی رو که انجام داده دوباره انجام بده یا خیر ؟ اگه جوابش مثبت بود اون وقت Visibleمربوط به یه کنترل ( مثلا Panel ) برابر Trueبشه . در غیر اینصورت صفحه جاری Refresh بشه .
در حقیقت من به خروجی Confirm میخوام دسترسی داشته باشم البته این رو هم میدونم که خروجی Confirm یکی از دو عبارت True یا False هست .
مشکل من فقط در نگهداری این مقداره . من خیلی دنبال این موضوع گشتم و حتی یه جواب هم پیدا کردم اما کار نکرد که نکرد . جوابی که پیدا کردم این بود :
First add a hidden field to your html document, for example:
Code:
< input type="hidden" name="myHiddenField" id="myHiddenField"/ >
Then change your script to this:
Code:
Dim sb As New StringBuilder("")
sb.Append("<script language='javascript'>")
sb.Append("var bConfirm = confirm('Are you sure?');")
sb.Append("var hdnField = document.getElementById('myHiddenField');")
sb.Append("if(hdnField){hdnField=bConfirm;}")
sb.Append("if (bConfirm) {document.submit();}")
sb.Append("</script>")
Response.Write(sb.ToString())
This will write the value of the confirm into the hidden field which will then be available to your server-side code after postback... for example in your vb.net code you could do something like this:
Code
dim bConfirm as Boolean
if Not IsNothing(Request.Form("myHiddenField")) then
bConfirm = cbool(Request.Form("myHiddenField"))
If bConfirm Then
'do something for example : panel1.visible=true
Else
'panel2.visible=true
' OR
'Response.Redirect("WebForm1.aspx")
end if
end if
اما با خطای زیر روبرو شدم :
Input string was not in a correct format.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
Exception Details: System.FormatException: Input string was not in a correct format.
Source Error:
Line 65: Dim bConfirm As Boolean
Line 66: If Not IsNothing(Request.Form("myHiddenField")) Then
Line 67: bConfirm = CBool(Request.Form("myHiddenField"))
Line 68: If bConfirm Then
Line 69: 'do something for example : panel1.visible=true
Source File: C:\Inetpub\wwwroot\WebApplication3\WebForm1.aspx.v b ** Line: 67
فایل رو هم ضمیمه کردم.
لطفا اگه کسی میدونه این دو تا سوال رو واضح جواب بده . ممنون میشم .
من برای اینکه بتونم از Confirm استفاده کنم کد زیر رو نوشتم :
<script language="javascript">
function viewConfirm()
{
return confirm('my Message');
}
</ script >
و همچنین :
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Button1.Attributes.Add("Onclick", "return viewConfirm();")
End Sub
اما مشکلی که با این روش داشتم این بود که وقتی صفحه واسه اولین بار Load میشد و اولین مرتبه روی دکمه کلیک می کردم کادر پیغام ظاهر نمی شد اما واسه کلیکهای بعدی این اتفاق نمی افتاد و درست کار می کرد !!!!!
سوال 1 ) چرا این اتفاق می افته ؟ آیا مشکل از Browser هست یا از Code؟
بدون اینکه به جواب سوال بالا برسم از روش زیر استفاده کردم :
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
'************************************************* *********************
Response.Write("<script language='javascript'> confirm('my Message')</script>")
'************************************************* *********************
' another code '************************************************* *********************
'Dim strJ As New System.Text.StringBuilder("")
' strJ.Append("<script language='javascript'>")
' strJ.Append("var ok = confirm('Are you sure?');")
' strJ.Append("if (ok) {document.submit();}")
' strJ.Append("</script>")
'Response.Write(strJ.ToString())
End Sub
که با استفاده از هر دو روش مشکلم حل شد .
سوال دوم ) اما این مشکل بزرگ من هنوز حل نشده و امیدوارم یکی واضح بگه که جوابش چی میشه .
من میخوام وقتی کاربر روی Button کلیک کرد ابتدا یه پیغام ظاهر بشه مبنی بر اینکه آیا تمایل داره عملی رو که انجام داده دوباره انجام بده یا خیر ؟ اگه جوابش مثبت بود اون وقت Visibleمربوط به یه کنترل ( مثلا Panel ) برابر Trueبشه . در غیر اینصورت صفحه جاری Refresh بشه .
در حقیقت من به خروجی Confirm میخوام دسترسی داشته باشم البته این رو هم میدونم که خروجی Confirm یکی از دو عبارت True یا False هست .
مشکل من فقط در نگهداری این مقداره . من خیلی دنبال این موضوع گشتم و حتی یه جواب هم پیدا کردم اما کار نکرد که نکرد . جوابی که پیدا کردم این بود :
First add a hidden field to your html document, for example:
Code:
< input type="hidden" name="myHiddenField" id="myHiddenField"/ >
Then change your script to this:
Code:
Dim sb As New StringBuilder("")
sb.Append("<script language='javascript'>")
sb.Append("var bConfirm = confirm('Are you sure?');")
sb.Append("var hdnField = document.getElementById('myHiddenField');")
sb.Append("if(hdnField){hdnField=bConfirm;}")
sb.Append("if (bConfirm) {document.submit();}")
sb.Append("</script>")
Response.Write(sb.ToString())
This will write the value of the confirm into the hidden field which will then be available to your server-side code after postback... for example in your vb.net code you could do something like this:
Code
dim bConfirm as Boolean
if Not IsNothing(Request.Form("myHiddenField")) then
bConfirm = cbool(Request.Form("myHiddenField"))
If bConfirm Then
'do something for example : panel1.visible=true
Else
'panel2.visible=true
' OR
'Response.Redirect("WebForm1.aspx")
end if
end if
اما با خطای زیر روبرو شدم :
Input string was not in a correct format.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
Exception Details: System.FormatException: Input string was not in a correct format.
Source Error:
Line 65: Dim bConfirm As Boolean
Line 66: If Not IsNothing(Request.Form("myHiddenField")) Then
Line 67: bConfirm = CBool(Request.Form("myHiddenField"))
Line 68: If bConfirm Then
Line 69: 'do something for example : panel1.visible=true
Source File: C:\Inetpub\wwwroot\WebApplication3\WebForm1.aspx.v b ** Line: 67
فایل رو هم ضمیمه کردم.
لطفا اگه کسی میدونه این دو تا سوال رو واضح جواب بده . ممنون میشم .