要想豁然开朗就请先学HTML和javascript.
谢谢.

解决方案 »

  1.   

    3楼 我的问题的关键就在于。不是每张表都有主key的
    这个时候。怎么办?
      

  2.   

    http://www.lokcore.com/avrilxu/article.asp?id=5
    repeater的使用,先巩固一下基础知识吧
      

  3.   

    回6 没有主key。如果一定要说删除。过多条件合查询删除也是可行
     通过各位的回复。基本明确。用我说的方法。前提是id必须是主key。这就是关键,可是很多文章没有说明。所以之前有那样的疑惑。确定了就没了。谢谢~~~
      

  4.   

    四楼已经说的很好了
    你列出的方法1,2,3 其实本质是一样的
    没有你那样设计表的 
    repeater所有的记录肯定是要有区别的字段 当然你可以在表中设计一下
    就算是有 或者你可以通过rpt_topicsList_ItemDataBound改一下 不过这样肯定很笨
      

  5.   

    Container.DataItem 是你的数据源中的一项或者说是一条记录;
    数据源无非来自两个方面,或者是List<>一类,或者是DataSet一类,如果是来自于List一类的,也就是说你从数据库取出来的数据已经和某个实体类对应上了,那这个Id就是这个实体类的一个属性;
    如果是来自于DataSet一类的,那这个Id就应该是你数据库中的字段名了。再说一下按钮的 CommandArgument和CommandName, 在Repeater的ItemCommand事件中,我们通过判断CommandName来判断是哪个按钮触发了ItemCommand事件,而这个时候e.CommandArgument就是你绑定在触发事件的Button的CommandArgument了,直接按照这个参数做删除就可以了。
      

  6.   

    同意 虽然不精通repeater删除,但是要删除repeater里面的东西,却没有任何难度。
      

  7.   

    把按钮的commandArgument设置为数据主键
    在按钮点击事件里写
    LinkButton lb=sender as LinkButton;
    delete(Convert.ToInt32(lb.commandArgument));
      

  8.   

    至于你说的方法:我通常是在repeater中放一个label来绑定主键ID,在删除的时候 用FindControl查找该控件,获取到ID,来删除。当然这种方法很笨,楼上应该有更好点的方法。
    还有个其他的思路供你参考:
    在repeater列表的第一列放置单选框,value绑定主键。在repeater下面放置工具栏,工具栏里放一个删除按钮。
    当单选框被 选中时,就用js将单选框的主键写到一个隐藏域里,然后点击删除的时候,通过这个隐藏域来获取主键ID。明白?
    所以说,如果换成复选框,你可以一次删除多条记录。
      

  9.   


            <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);
        }
      

  10.   

           <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);
        }
      

  11.   

            <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);
            }
        }
      

  12.   


    你没有主键,那么你自己制定一个规则,如何唯一标识一条记录,如果定好了规则,你就把多个值绑定到CommandArgument参数里好了(例如可以用 | 线分割),反正不过是一个字符串标记,你在后台用这个字符串好知道是该去唯一查询到一条记录就可以了!
      

  13.   

    不用纠结于主键,虽然有主键当然也不错!你甚至可以绑定一个sql,例如CommandArgument=' <%# GetMySql((string)Eval("field1"),(int)Eval("field2"),(double)Eval("field3")) %>' 然后后台的GetMySql函数返回一个完整的sql语句“select * from .... where field1=.... and field2>....and file3 like ...”也没人挡得住你,反正它不过是为了让你之后从 e.CommandArgument 中能够取回去点东西而已,这个东西你随便绑定
      

  14.   

    在20楼童鞋的基础上加个判断是否要删除,用js里confirm来判断,如何操作,求解,本人这个问题纠结了很久