页面代码:
    <asp:Repeater ID="rpt_Message" runat="server" OnItemCommand="rpt_Message_ItemCommand">
    <ItemTemplate>
    <table width="600px" style="border:solid 1px #666666; font-size:10px; background-color:#f0f0f0">
    <tr>
    <td align="left" style="width:400px; height: 14px;">
    <%# Eval("Message") %>
    </td>
    <td align="left" style="width:400px">
    <%# Eval("PostTime") %> - <%# Eval("UserName")%>
    </td>
    </tr>
    <tr>
    <td colspan="2" align="left">
    <hr style="width:300px"/>
    <asp:Button ID="btn_DeleteMessage" runat="server" Text="删除留言" CommandName="DeleteMessage" CommandArgument='<%# Eval("ID") %>'/>
    管理员回复:
    <asp:TextBox runat="server" ID="tb_Reply" TextMode="multiLine" Width="300px" Text='<%# Eval("Reply") %>' />
    <asp:Button ID="btn_SendReply" runat="server" Text="发表回复" CommandName="SendReply" CommandArgument='<%# Eval("ID") %>' />
    </td>
    </tr>
    </table>
    </ItemTemplate>
    </asp:Repeater>cs代码:
    protected void rpt_Message_ItemCommand(object source, RepeaterCommandEventArgs e)
    {
        if (e.CommandName == "DeleteMessage")
        {
            SqlConnection conn = new SqlConnection("server=.;database=GuesBook;uid=sa;pwd=yf3");
            string sql = "DELETE FROM tbGuestBook WHERE ID='"+e.CommandArgument+"'";
            SqlCommand cmd = new SqlCommand(sql, conn);
            conn.Open();
            cmd.ExecuteNonQuery();
            conn.Close();
            SetBind();
        }
        if (e.CommandName == "SendReply")
        {
            SqlConnection conn = new SqlConnection("server=.;database=GuesBook;uid=sa;pwd=yf3");
            string sql="UPDATE tbGuestBook SET IsReplied=1,Reply='"+((TextBox)e.Item.FindControl("tb_Reply")).Text+"' where ID='"+e.CommandArgument+"'";
            SqlCommand cmd = new SqlCommand(sql, conn);
            conn.Open();
            cmd.ExecuteNonQuery();
            conn.Close();
            SetBind();
        }
    }
这是我抄的代码,不明白的是没有单击事件为什么也能进行删除和添加数据啊???这里面哪几个是比较关键的?

解决方案 »

  1.   

    <asp:Button ID="btn_DeleteMessage" runat="server" Text="删除留言" CommandName="DeleteMessage" CommandArgument='<%# Eval("ID") %>'/>
    这个button可以触发单击事件,怎么说没有。
      

  2.   

    哦明白LZ的意思了,LZ的意思是button没有click事件怎么也能进行删除<asp:Button ID="btn_DeleteMessage" runat="server" Text="删除留言" CommandName="DeleteMessage" CommandArgument='<%# Eval("ID") %>'/>这里有一个事件if (e.CommandName == "DeleteMessage")
      {
      SqlConnection conn = new SqlConnection("server=.;database=GuesBook;uid=sa;pwd=yf3");
      string sql = "DELETE FROM tbGuestBook WHERE ID='"+e.CommandArgument+"'";
      SqlCommand cmd = new SqlCommand(sql, conn);
      conn.Open();
      cmd.ExecuteNonQuery();
      conn.Close();
      SetBind();
      }
      

  3.   

    ItemCommand这个事件就是当点击LinkButton时候会执行的事件。当点击名字是DeleteMessage的LinkButton时就会删除了。后面同理。
      

  4.   

    他本身就是按钮拉,怎么会没有单击事件呢。if (e.CommandName == "DeleteMessage")
    这个是关键,判断你触发那个单击事件
      

  5.   

    点击Repeater 下的任何按钮都将触发OnItemCommand的事件
    <asp:Repeater ID="rpt_Message" runat="server" OnItemCommand="rpt_Message_ItemCommand">按钮中CommandName用于区分触发了哪个按钮的事件,CommandArgument用于传递参数,在你的例子中
    CommandArgument传递的是这条数据的ID值
     <asp:Button ID="btn_DeleteMessage" runat="server" Text="删除留言" CommandName="DeleteMessage" CommandArgument='<%# Eval("ID") %>'/>
    事件处理程序中e.CommandName 来判断触发的删除按钮的事件
    e.CommandArgument将ID值传递过来,拼装成sql语句,然后执行这条语句
     if (e.CommandName == "DeleteMessage")
      {
      SqlConnection conn = new SqlConnection("server=.;database=GuesBook;uid=sa;pwd=yf3");
      string sql = "DELETE FROM tbGuestBook WHERE ID='"+e.CommandArgument+"'";
      

  6.   

    我刚学.net对很多东西还不是很熟悉,谢谢大家