做了一整天了,实在是不知道怎么办了,各位大侠帮帮忙~~~~我想在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……各位帮帮忙,我都搞了一整天了还是没弄明白哪里错了………………

解决方案 »

  1.   

    1.调用页面值传了吗?
    2.接受的页面断点调试,
    Request.QueryString["cid"]有值了吗??
      

  2.   


    <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()
      

  3.   

    总觉得你的LinkButton中OnCommand怪怪的,一般为onclick!!
    <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>
      

  4.   

    <asp:LinkButton ID="LinkButton1" runat="server" CommandName="del" CommandArgument=<%#Eval("id")%>>删除 </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,然后就简单了吧
      

  5.   

    前台repeater中的linkButton :<asp:LinkButton ID="lbn_delall" runat="server" CommandName="lbn_delall">删除选中</asp:LinkButton>
    后台:
    protected void Repeater1_ItemCommand(object source, RepeaterCommandEventArgs e)
            {
                switch (e.CommandName)
                {                 case "lbn_delall":
                        //做你想做的                     
                         break;
                           
                    default:
                        break;            }
                    }
      

  6.   

    这个是常用的 你的那个把id给了CommandName,实际上你没有传值 所以int ID = Convert .ToInt32 ( Request.QueryString["id"]);是零就对了 如果是别的说明还错了呢
      

  7.   


    你是什么意思啊,我是给了CommandArgument不是给了commandname啊