Эй, ребята, у меня есть кнопка удаления, связанная с некоторым Javascript следующим образом:
<script type="text/javascript">
function confirm_delete()
{
if (confirm("Are you sure you want to delete this comment?")==true)
return true;
else
return false;
}
</script>
<p>
<asp:Button ID="btn" OnClientClick="if(confirm_delete()){/* post back*/}else{return false;};" OnClick="btnDelete_Click" runat="server" Text="delete"/>
В следующем коде у меня есть это:
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))
{
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));
// the Div ID is set to my idWallPosting in my WallPosting Table
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)
{
//serverside code if confirm was pressed to delete from WallPosting table based on Div ID.
}
Первая часть кода позадиdynamicicallys добавляет divs и добавляет id = к idWallPosting. Я подумал, что мне следует это сделать, поэтому, когда дело дошло до их удаления, все, что мне нужно было сделать, это указать ссылку на div.ID, но я не уверен, как добавить строку для преобразования идентификатора div встрока, чтобы я мог передать это в мой синтаксис sql?
Это должно быть взято со стороны html, а не со стороны сервера, вывод которого выглядит следующим образом, когда div загружаются при выполнении:
(firebug)
<div id="ctl00_ContentPlaceHolder1_ContentPlaceHolder2_26"><div>
Как бы я удалил заполнитель содержимого ct100 и т. д., чтобы получить самый конечный номер (26) и поместить его в кнопку удаления в виде строки?
РЕДАКТИРОВАТЬ: (Патрик)
protected void btnDelete_Click(object sender, EventArgs e)
{
idWallPosting = Div.ID;
//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 = "+idWallPosting+")", cn))
{
cmd.ExecuteNonQuery();
}
}
PopulateWallPosts(); //error here
}
Редактировать:
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();
}
Ничего не делает.