Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何从asp.net中的scriptmanager.RegisterClient脚本中写入的javascript确认框返回值。?_C#_Javascript_Asp.net_.net_Vb.net - Fatal编程技术网

C# 如何从asp.net中的scriptmanager.RegisterClient脚本中写入的javascript确认框返回值。?

C# 如何从asp.net中的scriptmanager.RegisterClient脚本中写入的javascript确认框返回值。?,c#,javascript,asp.net,.net,vb.net,C#,Javascript,Asp.net,.net,Vb.net,如何从asp.net中的scriptmanager.RegisterClient脚本中写入的javascript确认框返回值 实际上,我想在gridview文本框的文本更改事件上给出确认框。如果用户单击“是”,则我想更新更改的值,如果用户单击“否”,则应恢复为旧值 我的伪代码如下所示: Protected Sub GridViewCreateInvoice_QuantityTextChanged(ByVal sender As Object, ByVal e As EventArgs)

如何从asp.net中的scriptmanager.RegisterClient脚本中写入的javascript确认框返回值

实际上,我想在gridview文本框的文本更改事件上给出确认框。如果用户单击“是”,则我想更新更改的值,如果用户单击“否”,则应恢复为旧值

我的伪代码如下所示:

Protected Sub GridViewCreateInvoice_QuantityTextChanged(ByVal sender As Object, ByVal e As EventArgs)
        Dim gr As GridViewRow
        Dim i As Boolean
        Dim txtqty, txtupdatedQty As TextBox
        Dim txtoqty, qty As String
        Dim result As MsgBoxResult
        'Dim dtPOFulfillmentInfo As DataTable

        Try

            txtqty = DirectCast(sender, TextBox)
            gr = txtqty.NamingContainer


            '' txtoqty = GridViewCreateInvoice.Rows(gr.DataItem("originalqty")).ToString()
            txtoqty = DataBinder.Eval(gr.DataItem, "originalqty").ToString()
            qty = DataBinder.Eval(gr.DataItem, "qty").ToString()


            If Not ((txtqty.Text = String.Empty And Not txtqty.Text.Trim = "" And Not txtqty.Text.Contains(" ")) And (txtoqty = String.Empty)) Then

                If txtqty.Text > txtoqty Then
                     ScriptManager.RegisterClientScriptBlock(Page, Me.GetType(), "Confirm Quantity Changed", return confirm("Are you sure you want to continue"), True)

                    If i = True Then
                        DataBinder.Eval(gr.DataItem, "qty") = txtqty.Text
                    Else
                        txtqty.Text = DataBinder.Eval(gr.DataItem, "qty").ToString()
                    End If
                Else
                     ScriptManager.RegisterClientScriptBlock(Page, Me.GetType(), "Confirm Quantity Changed", return confirm("Are you sure you want to continue"), True)

                    If i = True Then
                        DataBinder.Eval(gr.DataItem, "qty") = txtqty.Text
                    Else
                        txtqty.Text = DataBinder.Eval(gr.DataItem, "qty").ToString()
                    End If
                End If
            End If
        Catch ex As Exception

            Common.WriteLog(ex.Message)
            Common.WriteLog((ex.StackTrace))
            Response.Redirect("~/Error.aspx", False)
        End Try
    End Sub 

我建议不要在
TextBox
TextChanged
事件上发回(
AutoPostback=true

相反,我建议您在客户端完成所有操作。一种方法是处理
onchange
事件,以显示javascript
确认
,并在用户单击
取消
时立即恢复旧值:

function confirmUpdate(sender,message){
    var update = confirm(message);
    if(update){
        return true;
    }else{
        sender.value = sender.defaultValue;
        return false;
    }
}

您可以在
GridView
的服务器端注册此函数:

protected void gridview1_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        TextBox txtqty = (TextBox)e.Row.FindControl("txtqty");
        txtqty.Attributes.Add("onchange", "return confirmUpdate(this, 'Are you sure you want to continue')");
    }
}
我不知道您还实现了什么逻辑。。
这是一个简单的解决方案,可能对你有帮助。。
在页面中添加标签,例如lblScript
然后只需从服务器端设置其文本,即
lblScript.Text=
“var x=window.confirm('你确定你没事吗?')
if(x)
window.alert('Good!')//
其他的
window.alert(“太糟糕了”)
";    

非常感谢你,蒂姆……我要试试这个……)
I dont know what else logic you had implemented..
its a simple solution may be it helps u..

put a label for e.g lblScript in your page

then simply set its text from server side i.e
lblScript.Text = 
"<script> var x=window.confirm('Are you sure you are ok?')
if (x)
window.alert('Good!') //
else
window.alert('Too bad')
</script>";