很简单的问题,只有我一个人不懂。

gootey 2011-02-19 09:36:06
有一个repeater控件,在每一个项后面,我加了一个“编辑”和“删除”按钮,我的目的是点“删除”时,就删除相应的项。我试了一下,不行。不知道在哪出错。哥哥们指点一下。谢谢了。
该怎么实现呢?
前台码:
[code=HTM]
<%@ Page Language="C#" MasterPageFile="~/MasterPageHT.master" AutoEventWireup="true" CodeFile="manage_new.aspx.cs" Inherits="manage_new" Title="后台管理" %>

<asp:Content ID="Content1" ContentPlaceHolderID="head" Runat="Server">
</asp:Content>

<asp:Content ID="Content2" runat="server"
contentplaceholderid="ContentPlaceHolder1">
<asp:Repeater ID="Repeater1" runat="server" OnItemDataBound="Repeater1_ItemDataBound" >
<ItemTemplate>
<table style="width: 100%" >
<td><table style="width: 100%"><td width='500' align="left"><a href="manage_new_edit.aspx?id=<%# Eval("id") %>"><asp:Label ID="title" runat="server" Text='<%# Eval("title") %>' ForeColor="Red" Font-Underline="False" ToolTip='<%# Eval("title") %>'></asp:Label></a></td><td width='68' align="left"><font color= "#ff33cc"></font> <%# Eval("author")%></td><td width='100' align="left"> <font color="#ff33cc"><%# Eval("addtime", "{0:yyyy-MM-dd}")%></td><td align="left"></font> <%# Eval("readcount")%></td>
<td width='200' align="left">
<asp:LinkButton ID="bj" runat="server">编辑</asp:LinkButton>
<asp:LinkButton ID="sc" runat="server">删除</asp:LinkButton>
</td></table>
</td>
</table>
</ItemTemplate>
<FooterTemplate>
</FooterTemplate>
</asp:Repeater>
</asp:Content>
[/code]
后台码:
[code=C]
protected void sc_Click(object sender, EventArgs e)
{
string connstring = ConfigurationManager.ConnectionStrings["WHConn"].ConnectionString;
SqlConnection con = new SqlConnection(connstring);
con.Open();
Label lb = (Label)(Repeater1.Items[0].FindControl("title"));
string jtitle = lb.Text.Trim();
string comstr = "delete from news where title='jtitle'";
SqlCommand com = new SqlCommand(comstr,con);
com.ExecuteNonQuery();
Response.Redirect("manage_new.aspx");
}
[/code]
...全文
100 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
gootey 2011-02-19
  • 打赏
  • 举报
回复
啊哈,太感谢你们了。原来是真是string comstr = "delete from news where title = '"+jtitle+"'";
我一直对这个用法不理解。
wuyq11 2011-02-19
  • 打赏
  • 举报
回复
string connstring = ConfigurationManager.ConnectionStrings["WHConn"].ConnectionString;
using(SqlConnection con = new SqlConnection(connstring))
{
con.Open();
int index = ((RepeaterItem)(sender as LinkButton).Parent).ItemIndex;
Label lb = Repeater1.Items[index].FindControl("title") as Label;
string comstr = "delete from news where title = '"+lb.Text+"'";
SqlCommand com = new SqlCommand(comstr,con);
com.ExecuteNonQuery();
}
Response.Redirect("manage_new.aspx");
wuyq11 2011-02-19
  • 打赏
  • 举报
回复
</ItemTemplate>
<FooterTemplate>
<asp:Panel ID="Panel1" runat="server" Visible="false">
<asp:LinkButton ID="LinkButton1" runat="server" CommandName="Add">添加</asp:LinkButton>
<asp:LinkButton ID="LinkButton2" runat="server" CommandName="Delete">删除</asp:LinkButton>
</asp:Panel>
</FooterTemplate>
</asp:Repeater>

protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Footer)
{

}
}
protected void Repeater1_ItemCommand(object source, RepeaterCommandEventArgs e)
{
if (e.CommandName == "Add")
{
//..........
}
else if (e.CommandName == "Delete")
{
//.........
}
}
子夜__ 2011-02-19
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 gootey 的回复:]

非常感谢以上两位,不过我苦思冥想,刚才试了一下huangwenquan123的第一种方法,点了“删除”没有达到预想的效果,只是闪了一下。什么原因呢?再次感谢你们。
HTML code

<asp:Repeater ID="Repeater1" runat="server" OnItemDataBound="Repeater1_ItemDataBound" >
……
[/Quote]
看看string jtitle = lb.Text.Trim();这个里面有值没有

还有看看你的数据库记录还在吗?


string comstr = "delete from news where title = 'jtitle'";

改成
[code=C]
string comstr = "delete from news where title = '"+jtitle+"'";[/code]
wuyq11 2011-02-19
  • 打赏
  • 举报
回复
protected void btn_Click(object sender, EventArgs e)
{
RepeaterItem item =(RepeaterItem) ((Button)sender).Parent;
Label l = (Label)item.FindControl("title");
Response.Write(l.Text);
}
单步看看l.Text
gootey 2011-02-19
  • 打赏
  • 举报
回复
非常感谢以上两位,不过我苦思冥想,刚才试了一下huangwenquan123的第一种方法,点了“删除”没有达到预想的效果,只是闪了一下。什么原因呢?再次感谢你们。
HTML code

<asp:Repeater ID="Repeater1" runat="server" OnItemDataBound="Repeater1_ItemDataBound" >
<ItemTemplate>
<table style="width: 100%" >
<td><table style="width: 100%"><td width='500' align="left"><a href="manage_new_edit.aspx?id=<%# Eval("id") %>"><asp:Label ID="title" runat="server" Text='<%# Eval("title") %>' ForeColor="Red" Font-Underline="False" ToolTip='<%# Eval("title") %>'></asp:Label></a></td><td width='68' align="left"><font color= "#ff33cc"></font> <%# Eval("author")%></td><td width='100' align="left"> <font color="#ff33cc"><%# Eval("addtime", "{0:yyyy-MM-dd}")%></td><td align="left"></font> <%# Eval("readcount")%></td>
<td width='200' align="left">
<asp:LinkButton ID="bj" runat="server">编辑</asp:LinkButton>
<asp:LinkButton ID="sc" runat="server" onclick="sc_Click"> 删除</asp:LinkButton>
</td></table>
</td>
</table>
</ItemTemplate>
<FooterTemplate>

C# code

protected void sc_Click(object sender, EventArgs e)
{
string connstring = ConfigurationManager.ConnectionStrings["WHConn"].ConnectionString;
SqlConnection con = new SqlConnection(connstring);
con.Open();
int index = ((RepeaterItem)(sender as LinkButton).Parent).ItemIndex;
Label lb = Repeater1.Items[index].FindControl("title") as Label;
string jtitle = lb.Text.Trim();
string comstr = "delete from news where title = 'jtitle'";
SqlCommand com = new SqlCommand(comstr,con);
com.ExecuteNonQuery();
Response.Redirect("manage_new.aspx");
}
huangwenquan123 2011-02-19
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 wxr0323 的回复:]
引用 8 楼 huangwenquan123 的回复:

HTML code

<!--根据lz需求,点击linkbutton查找label的值-->
<asp:Repeater ID="Repeater1" runat="server">
<HeaderTemplate><table></HeaderTemplate>
<ItemTemplate>
<tr>
……


写……
[/Quote]呵呵 见笑了

<!--三中方法lz任选一种 一种是点击linkbutton查找label控件,一种是点击linkbutton获取它的CommandArgument 最后一种是通过ItemCommand事件判断CommandName获取CommandArgument-->
<asp:Repeater ID="Repeater1" runat="server"
onitemcommand="Repeater1_ItemCommand">
<HeaderTemplate> <table> </HeaderTemplate>
<ItemTemplate>
<tr>
<td> <%#Eval("ID") %> </td>
<td> <asp:Label ID="Label1" runat="server" Text=' <%#Eval("Name") %>'> </asp:Label> </td>
<td>
<asp:LinkButton ID="LinkButton2" runat="server" CommandName="Deletes" CommandArgument=' <%#Eval("Name") %>'>删除 </asp:LinkButton>
</td>
</tr>
</ItemTemplate>
<FooterTemplate> </table> </FooterTemplate>
</asp:Repeater>

    protected void Repeater1_ItemCommand(object source, RepeaterCommandEventArgs e)
{
if (e.CommandName == "Deletes")
{
Response.Write(e.CommandArgument);
}
}
huangwenquan123 2011-02-19
  • 打赏
  • 举报
回复
[code=HTM]
<!--三中方法lz任选一种 一种是点击linkbutton查找label控件,一种是点击linkbutton获取它的CommandArgument 最后一种是通过ItemCommand事件判断CommandName获取CommandArgument-->
<asp:Repeater ID="Repeater1" runat="server"
onitemcommand="Repeater1_ItemCommand">
<HeaderTemplate><table></HeaderTemplate>
<ItemTemplate>
<tr>
<td><%#Eval("ID") %></td>
<td><asp:Label ID="Label1" runat="server" Text='<%#Eval("Name") %>'></asp:Label></td>
<td>
<asp:LinkButton ID="LinkButton2" runat="server" CommandName="Deletes" CommandArgument='<%#Eval("Name") %>'>删除</asp:LinkButton>
</td>
</tr>
</ItemTemplate>
<FooterTemplate></table></FooterTemplate>
</asp:Repeater>
[/code]

protected void Repeater1_ItemCommand(object source, RepeaterCommandEventArgs e)
{
if (e.CommandName == "Deletes")
{
Response.Write(e.CommandArgument);
}
}
huangwenquan123 2011-02-19
  • 打赏
  • 举报
回复

<asp:Repeater ID="Repeater1" runat="server">
<HeaderTemplate><table></HeaderTemplate>
<ItemTemplate>
<tr>
<td><%#Eval("ID") %></td>
<td><asp:Label ID="Label1" runat="server" Text='<%#Eval("Name") %>'></asp:Label></td>
<td><asp:LinkButton ID="LinkButton1" runat="server" OnClick="LinkButton1_Click" CommandArgument='<%#Eval("Name") %>'>删除</asp:LinkButton></td>
</tr>
</ItemTemplate>
<FooterTemplate></table></FooterTemplate>
</asp:Repeater>

    protected void LinkButton1_Click(object sender, EventArgs e)
{
LinkButton link = sender as LinkButton;
string name = link.CommandArgument;
Response.Write(name);
}
子夜__ 2011-02-19
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 huangwenquan123 的回复:]

HTML code

<!--根据lz需求,点击linkbutton查找label的值-->
<asp:Repeater ID="Repeater1" runat="server">
<HeaderTemplate><table></HeaderTemplate>
<ItemTemplate>
<tr>
……
[/Quote]

写的犀利。。学习了。
huangwenquan123 2011-02-19
  • 打赏
  • 举报
回复

<!--根据lz需求,点击linkbutton查找label的值-->
<asp:Repeater ID="Repeater1" runat="server">
<HeaderTemplate><table></HeaderTemplate>
<ItemTemplate>
<tr>
<td><%#Eval("ID") %></td>
<td><asp:Label ID="Label1" runat="server" Text='<%#Eval("Name") %>'></asp:Label></td>
<td><asp:LinkButton ID="LinkButton1" runat="server" onclick="LinkButton1_Click">删除</asp:LinkButton></td>
</tr>
</ItemTemplate>
<FooterTemplate></table></FooterTemplate>
</asp:Repeater>


protected void LinkButton1_Click(object sender, EventArgs e)
{
int index = ((RepeaterItem)(sender as LinkButton).Parent).ItemIndex;
Label lb = Repeater1.Items[index].FindControl("Label1") as Label;
Response.Write(lb.Text);
}
peter20091001 2011-02-19
  • 打赏
  • 举报
回复
在数据控件中定义删除的函数
子夜__ 2011-02-19
  • 打赏
  • 举报
回复
Label lb = (Label)(Repeater1.Items[0].FindControl("title"));

只是这句获取的值是不对的。。


第二行就要改成Items[1]了。这样不是很活

所以
<asp:LinkButton ID="sc" runat="server" CommandName="DeleteMock" CommandArgument=" <%# Eval("title") %>">删除 </asp:LinkButton>

用CommandArgument绑定你的title字段

然后删除的时候

这样去取string jtitle = e.CommandArgument.ToString().Trim();

那个参数

子夜__ 2011-02-19
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 gootey 的回复:]

啊。。没码对,许久没发帖子了。哥哥们将就着看了。
[/Quote]

你的思路也对。呵呵 只是我上大学的时候没见过这种。。悲剧啊!
子夜__ 2011-02-19
  • 打赏
  • 举报
回复
[code=HTM] <asp:Repeater ID="Repeater1" runat="server"
OnItemDataBound="Repeater1_ItemDataBound"
onitemcommand="Repeater1_ItemCommand" >
<ItemTemplate>
<table style="width: 100%" >
<td> <table style="width: 100%"> <td width='500' align="left">
<a href="manage_new_edit.aspx?id= <%# Eval("id") %>">
<asp:Label ID="title" runat="server" Text=' <%# Eval("title") %>' ForeColor="Red" Font-Underline="False" ToolTip=' <%# Eval("title") %>'>
</asp:Label> </a> </td> <td width='68' align="left"> <font color= "#ff33cc"> </font>  <%# Eval("author")%> </td> <td width='100' align="left">  <font color="#ff33cc"> <%# Eval("addtime", "{0:yyyy-MM-dd}")%> </td> <td align="left"> </font>  <%# Eval("readcount")%> </td>
<td width='200' align="left">
<asp:LinkButton ID="bj" runat="server">编辑 </asp:LinkButton>
<asp:LinkButton ID="sc" runat="server" CommandName="DeleteMock" CommandArgument="<%# Eval("title") %>">删除 </asp:LinkButton>
</td> </table>
</td>
</table>
</ItemTemplate>
<FooterTemplate>
</FooterTemplate>
</asp:Repeater> [/code]



[code=C] protected void Repeater1_ItemCommand(object source, RepeaterCommandEventArgs e)
{
if (e.CommandName == "DeleteMock")
{
string connstring = ConfigurationManager.ConnectionStrings["WHConn"].ConnectionString;
SqlConnection con = new SqlConnection(connstring);
con.Open();
string jtitle = e.CommandArgument.ToString().Trim();
string comstr = "delete from news where title='jtitle'";
SqlCommand com = new SqlCommand(comstr, con);
com.ExecuteNonQuery();
Response.Redirect("manage_new.aspx");
}
}[/code]
gootey 2011-02-19
  • 打赏
  • 举报
回复
嗯。每一行都有的。请教。
子夜__ 2011-02-19
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 gootey 的回复:]

啊。。没码对,许久没发帖子了。哥哥们将就着看了。
[/Quote]

这这样的思路是不对的。。

因为你的数据不是一行 是每一行都有吧?
gootey 2011-02-19
  • 打赏
  • 举报
回复
啊。。没码对,许久没发帖子了。哥哥们将就着看了。

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧