如何回发Javascript、jquery
在我的asp.net html端,我有:如何回发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
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("   " + "{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 codeIf(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','');