如何回发Javascript、jquery

如何回发Javascript、jquery,javascript,jquery,asp.net,Javascript,Jquery,Asp.net,在我的asp.net html端,我有: using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Data.Odbc; using System.IO; public partial class UserProfileWall : System.We

在我的asp.net html端,我有:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.Odbc;
using System.IO;

public partial class UserProfileWall : System.Web.UI.Page
{

    protected void Page_Load(object sender, EventArgs e)
    {
        //btn.Visible = false;
        string theUserId = Session["UserID"].ToString();
        PopulateWallPosts(theUserId);
    }
    private void PopulateWallPosts(string userId)
    {

        using (OdbcConnection cn = new OdbcConnection("Driver={MySQL ODBC 3.51 Driver}; Server=localhost; Database=gymwebsite2; User=root; Password=commando;"))
        {
            cn.Open();
            using (OdbcCommand cmd = new OdbcCommand("SELECT idWallPosting, wp.WallPostings, p.PicturePath FROM WallPosting wp LEFT JOIN User u ON u.UserID = wp.UserID LEFT JOIN Pictures p ON p.UserID = u.UserID WHERE wp.UserID=" + userId + " ORDER BY idWallPosting DESC", cn))
            {
                //("SELECT wp.WallPostings, p.PicturePath FROM WallPosting wp LEFT JOIN [User] u ON u.UserID = wp.UserID LEFT JOIN Pictures p ON p.UserID = u.UserID WHERE UserID=" + userId + " ORDER BY idWallPosting DESC", cn))
                using (OdbcDataReader reader = cmd.ExecuteReader())
                {
                    test1.Controls.Clear();

                    while (reader.Read())
                    {

                        System.Web.UI.HtmlControls.HtmlGenericControl div = new System.Web.UI.HtmlControls.HtmlGenericControl("div");
                        div.Attributes["class"] = "test";


                        div.ID = String.Format("{0}", reader.GetString(0));
                        // this line is responsible, problem here and my sqlsntax, im trying to set the SELECT idWallPosting for the div ID
                        Image img = new Image();
                        img.ImageUrl = String.Format("{0}", reader.GetString(2));

                        img.AlternateText = "Test image";

                        div.Controls.Add(img);
                        div.Controls.Add(ParseControl(String.Format("&nbsp&nbsp " + "{0}", reader.GetString(1))));
                        div.Attributes.Add("onclick", "return confirm_delete();");

                        div.Style["clear"] = "both";
                        test1.Controls.Add(div);

                    }
                }
            }
        }
    }

    //protected void btnDelete_Click(object sender, EventArgs e)
    //{

    //    string id = "ctl00_ContentPlaceHolder1_ContentPlaceHolder2_26";
    //    string[] idFragments = id.Split('_');
    //    id = idFragments[idFragments.Length - 1];

    //    //serverside code if confirm was pressed.
    //        using (OdbcConnection cn = new OdbcConnection("Driver={MySQL ODBC 3.51 Driver}; Server=localhost; Database=gymwebsite2; User=root; Password=commando;"))
    //        {
    //            cn.Open();
    //            using (OdbcCommand cmd = new OdbcCommand("DELETE FROM WallPosting WHERE idWallPosting = " + id + ")", cn))
    //            {
    //                cmd.ExecuteNonQuery();
    //            }
    //        }
    //        //PopulateWallPosts();

    //}

    protected void Button1_Click(object sender, EventArgs e)
    {
        string theUserId = Session["UserID"].ToString();
        using (OdbcConnection cn = new OdbcConnection("Driver={MySQL ODBC 3.51 Driver}; Server=localhost; Database=gymwebsite2; User=root; Password=commando;"))
        {
            cn.Open();
            using (OdbcCommand cmd = new OdbcCommand("INSERT INTO WallPosting (UserID, Wallpostings) VALUES (" + theUserId + ", '" + TextBox1.Text + "')", cn))
            {
                cmd.ExecuteNonQuery();
            }
        }
        PopulateWallPosts(theUserId);
    }
    protected void btn_Click(object sender, EventArgs e)
    {
        string id = "ctl00_ContentPlaceHolder1_ContentPlaceHolder2_26";
        string[] idFragments = id.Split('_');
        id = idFragments[idFragments.Length - 1];

        //serverside code if confirm was pressed.
        using (OdbcConnection cn = new OdbcConnection("Driver={MySQL ODBC 3.51 Driver}; Server=localhost; Database=gymwebsite2; User=root; Password=commando;"))
        {
            cn.Open();
            using (OdbcCommand cmd = new OdbcCommand("DELETE FROM WallPosting WHERE idWallPosting = " + id + ")", cn))
            {
                cmd.ExecuteNonQuery();
            }
        }
        //PopulateWallPosts();
    }
}
每当我点击我的div时,就会调用
confirm\u delete


我试图用asp.net按钮做的是,当单击div时,我可以调用
onclick btnDelete\u click

通过回发在这种情况下,是否只刷新页面?如果是这样的话,那就是:

div.Attributes.Add("onclick", "return confirm_delete();")
就你而言:

    location.reload();

函数CallServer()
{
location.reload();
}
演示(点击按钮提示用户确认-如果用户选择“是”,则会出现回发)

就这样

编辑:uu doPostBack也可以工作

OnClientClick="return confirm_delete();"

有一种方法肯定不是最好的: 将按钮添加到更新面板中并将其设置为不可见。 然后调用按钮的click()方法

像这样的事情:

OnClientClick="if(confirm('delete?'))__doPostBack('btn',''); else return false;"

如果确实要手动调用
\uuu doPostBack()
,则第一个参数是为控件生成的.NET名称。这可以在服务器端使用
Control.ClientID
获得。第二个参数是应该在请求中传递的任何额外数据。大多数时候,我看到这个字段是一个空字符串

document.getElementById('button').click();

controlName
是我相信的控件的.NET类名,
id
是您给控件的id。当然,在浏览器中呈现页面后,可以查看页面的源代码,搜索对
\uuu doPostBack
的调用,并查看它们的格式。

回发是指单击按钮(而不是仅单击客户端)不是在调用服务器端代码吗?如果Tim的解决方案对您不起作用-也许OnClientClick和OnClick方法之间存在冲突。尝试删除其中一个,看看它是否能解决您的问题。如果我删除onclick客户端,我无法调用javascript,如果我删除onclick,那么我无法调用服务器端代码,那么这有什么帮助?如果您所做的只是使用javascript进行确认,那么Tim的解决方案应该适合您。我的建议是,为了确定您的onClientClick/onClick语句中的一个或两个是否存在语法问题,我有一个触发javascript的div,我正试图将我的asp按钮绑定到调用,因此当我单击该div并被要求确认它将在后面的代码中触发asp onClick事件时,该人已经尝试过了,它不会调用服务器端代码,如果我手动点击按钮,则调用代码,但不使用javascript进行尝试happens@Garrith这就是重点,不是吗?如果您不想删除它,就没有理由点击服务器。@Garrith:这在大多数浏览器中都能正常工作(我不确定IEThe code
If(xyz==true){return true;}else{return false;}
似乎有点多余。返回xyz;不是更干净、更不容易出错吗?Garrith:向我们展示完整的aspx上下文。您使用的是UpdatePanels吗?如果您只需编写
OnClientClick=“javascript:return confirm”(“您确定要删除此注释吗?”)
?更新希望我解释得更好我不确定为什么不调用处理程序-首先我认为这是因为每次回发时都要清除DIV的控件,但按钮不是它的一部分。但是如果你只想调用它的处理程序,你可以将它的样式显示设置为
,然后调用doPostBack(见我的答案)从div的click事件调用按钮处理程序(确认后)。不要将onclick处理程序添加为属性。在aspx文件中使用
onclick
onclintclick
。服务器将包装这些处理程序并为您设置
onclick
div.Attributes.Add("onclick", "return confirm_delete();")
    location.reload();
    <script type="text/javascript">
        function CallServer() 
        {
               location.reload();
        }
    </script>
OnClientClick="return confirm_delete();"
OnClientClick="if(confirm('delete?'))__doPostBack('btn',''); else return false;"
document.getElementById('button').click();
__doPostBack('ctl100$controlName$id','');