做了一整天了,实在是不知道怎么办了,各位大侠帮帮忙~~~~我想在repeater控件中绑定button控件,实现删除功能
这是前台页面的:
<%@ Control Language="C#" AutoEventWireup="true" CodeFile="Adminbooklist.ascx.cs" Inherits="Adminbooklist" %><asp:Repeater id = "admin" runat ="server" onitemcommand="admin_ItemCommand" >
<HeaderTemplate>
<table>
<tr><td>分类</td><td>书名</td><td>作者</td><td >简述</td><td>图片</td><td>链接</td></tr>
</HeaderTemplate>
<ItemTemplate>
<tr>
<td><%#Eval("Cat")%></td>
<td><%#Eval("B_name")%></td>
<td><%#Eval("B_author")%></td>
<td><%#Eval("B_description")%></td>
<td><asp:Image ID="image" runat="server" ImageUrl='<%#Eval("B_pic")%>'/></td>
<td><a href='<%# string.Format("{0}", Eval("Src")) %>'>书本链接</a></td>
<td> <asp:LinkButton ID="LinkButton1" runat="server" CommandName='<%#Eval("id") %>' OnCommand ="BtnDel_Click" >删除</asp:LinkButton></td>
</tr>
</ItemTemplate>
<FooterTemplate>
</table>
</FooterTemplate>
</asp:Repeater>这是后台页的:
protected void BtnDel_Click(object sender, CommandEventArgs e)
{
int cid;
BLL.book b = new BLL.book(); if (Request.QueryString["cid"] == null)
cid = 0;
else
cid = Convert.ToInt32(Request.QueryString["cid"]);
admin.DataSource = b.GetList(cid);
admin.DataBind();
int ID = Convert .ToInt32 ( Request.QueryString["id"]);
b.DelNode(ID); }
三层架构,其中BLL中的delNode是个删除函数,传入ID就可以了,函数测试过了没有问题,这整个页面运行也不会显示错误,只是按了删除之后没有任何反应,单步调试似乎也没什么问题,只是每次运行到红色那一句时ID值仍为0……各位帮帮忙,我都搞了一整天了还是没弄明白哪里错了………………
这是前台页面的:
<%@ Control Language="C#" AutoEventWireup="true" CodeFile="Adminbooklist.ascx.cs" Inherits="Adminbooklist" %><asp:Repeater id = "admin" runat ="server" onitemcommand="admin_ItemCommand" >
<HeaderTemplate>
<table>
<tr><td>分类</td><td>书名</td><td>作者</td><td >简述</td><td>图片</td><td>链接</td></tr>
</HeaderTemplate>
<ItemTemplate>
<tr>
<td><%#Eval("Cat")%></td>
<td><%#Eval("B_name")%></td>
<td><%#Eval("B_author")%></td>
<td><%#Eval("B_description")%></td>
<td><asp:Image ID="image" runat="server" ImageUrl='<%#Eval("B_pic")%>'/></td>
<td><a href='<%# string.Format("{0}", Eval("Src")) %>'>书本链接</a></td>
<td> <asp:LinkButton ID="LinkButton1" runat="server" CommandName='<%#Eval("id") %>' OnCommand ="BtnDel_Click" >删除</asp:LinkButton></td>
</tr>
</ItemTemplate>
<FooterTemplate>
</table>
</FooterTemplate>
</asp:Repeater>这是后台页的:
protected void BtnDel_Click(object sender, CommandEventArgs e)
{
int cid;
BLL.book b = new BLL.book(); if (Request.QueryString["cid"] == null)
cid = 0;
else
cid = Convert.ToInt32(Request.QueryString["cid"]);
admin.DataSource = b.GetList(cid);
admin.DataBind();
int ID = Convert .ToInt32 ( Request.QueryString["id"]);
b.DelNode(ID); }
三层架构,其中BLL中的delNode是个删除函数,传入ID就可以了,函数测试过了没有问题,这整个页面运行也不会显示错误,只是按了删除之后没有任何反应,单步调试似乎也没什么问题,只是每次运行到红色那一句时ID值仍为0……各位帮帮忙,我都搞了一整天了还是没弄明白哪里错了………………
2.接受的页面断点调试,
Request.QueryString["cid"]有值了吗??
<asp:LinkButton ID="LinkButton1" runat="server" CommandName="del">删除 </asp:LinkButton>
protected void rpt_ItemCommand(object source, RepeaterCommandEventArgs e)
{
if (e.CommandName.Equals("del"))
{
}
}
Request.QueryString["id"]==null?"0":Request.QueryString["id"].ToString()
<asp:LinkButton ID="LinkButton1" runat="server" CommandName='<%#Eval("id") %>' OnCommand ="BtnDel_Click" >删除</asp:LinkButton>常规是:
<asp:LinkButton ID="LinkButton1" runat="server" CommandName='<%#Eval("id") %>' onclick ="BtnDel_Click" >删除</asp:LinkButton>
protected void rpt_ItemCommand(object source, RepeaterCommandEventArgs e)
{
if (e.CommandName.Equals("del"))
{
string delSql="delete from xx where id="+e.CommandArrgument.toString();
}
}就是把button的commandArgument绑定要删除的ID,然后就简单了吧
后台:
protected void Repeater1_ItemCommand(object source, RepeaterCommandEventArgs e)
{
switch (e.CommandName)
{ case "lbn_delall":
//做你想做的
break;
default:
break; }
}
你是什么意思啊,我是给了CommandArgument不是给了commandname啊