<asp:DataList ID="DataList1" runat="server">
            <ItemTemplate>
               <table border=1><tr><td><%#Eval("id") %></td><td><%#Eval("features_e")%></td><td><img src="<%#Eval("ylt")%>" /></td><td>
                   <asp:Button ID="Button1" runat="server" Text="Button" onclick="Button1_Click" /></td></tr></table>
                
            </ItemTemplate>
        </asp:DataList>
      上面是我的前台    public void dsband()
    {
        OleDbConnection conn = db.getconnection();
        conn.Open();
        string mysql = "SELECT * FROM testbhproduct order by id desc";
        OleDbDataAdapter oa = new OleDbDataAdapter(mysql, conn);
        DataSet ds = new DataSet();
        oa.Fill(ds, "tb");
        DataList1.DataSource = ds.Tables["tb"].DefaultView;
        this.DataList1.DataKeyField = "id";
        DataList1.DataBind();
    }
    protected void Button1_Click(object sender, EventArgs e)
    {
       
    }
}
这里是我的后台,我要怎么样才能点击那按钮直接删除那行,我的难点就在于怎么获取那行的ID。请高手指教。

解决方案 »

  1.   

     <asp:Button ID="Button1" runat="server" Text="Button" onclick="Button1_Click" commandname="domy" />
    在datalist的 rowcommand中写if (e.commandname=="domy")
    {
    //做你的事情
    }
      

  2.   

    不明白为嘛要用Buttond的onClick事件  实践证明根本是不行的<asp:DataList ID="DataList1" runat="server" DataKeyField=“ID”  onitemcommand="DataList1_ItemCommand">
                <ItemTemplate>
                   <table border=1><tr><td><%#Eval("id") %></td><td><%#Eval("features_e")%></td><td><img src="<%#Eval("ylt")%>" /></td><td>
                       <asp:Button ID="Button1" runat="server" Text="Button"  CommandName="Del" /></td></tr></table>
                    
                </ItemTemplate>
            </asp:DataList>把Button的单击事件去掉 换成CommandName="Del"
    在DateList里加入DataKeyField=“ID”  ID是你数据源的字段
    Datalist加入onitemcommand事件 protected void DataList1_ItemCommand(object source, DataListCommandEventArgs e)
        {
            if (e.CommandName == "Del")//Button里的CommandName
            {
                int ID = DataList1.DataKeys[e.Item.ItemIndex];//获取删除信息的ID
                ///
               ///删除信息的方法
               ///
                Delete(ID);
            }
        }
      

  3.   

    删除后要在onitemcommand事件里重新绑定一下数据源哦
    要是能把DataList放到UpdatePanel里效果就更好了
      

  4.   

     int ID = DataList1.DataKeys[e.Item.ItemIndex];//获取删除信息的ID
    忘了
    应该是int ID=Convert.ToInt32(DataList1.DataKeys[e.Item.ItemIndex].ToString());
      

  5.   

    使用按钮的Command事件:<asp:DataList ID="DataList1" runat="server">
    <ItemTemplate>
        <table border=1><tr><td> <%#Eval("id") %> </td><td><%#Eval("features_e")%></td><td><img src="<%#Eval("ylt")%>" /></td><td>
        <asp:Button ID="Button1" runat="server" Text="Button" oncommand="Button1_Command" CommandArgument='<%#Eval("id") %>'/></td></tr></table>
                    
    </ItemTemplate>
    </asp:DataList>protected void Button1_Command(object sender, CommandEventArgs e)
    {
       string id= e.CommandArgument.ToString();
       //do something   
    }
      

  6.   


    纯胡说!!你自己最好琢磨下到底行不行。最好百度下“NamingContainer”是什么东西。然后你再说为什么不行,为什么行。
      

  7.   


    <a href='ProductClassList.aspx?action=del&id=<%#Eval("id") %>' class="list_link" onclick="{if(confirm('确认删除吗?')){return true;}return false;}"><img src="Images/del.gif" border="0" alt="删除"/></a> protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                
                DisplayProduct();//绑定产品信息
            }
            if (Request["action"] != null)
            {
                int id = Convert.ToInt32(Request["id"]);
                DelPro(id);//删除
            }
        } /// <summary>
        /// 删除
        /// </summary>
        /// <param name="id"></param>
        public void DelPro(int id)
        {
         ProductManager.DelProduct(id);
         DisplayProduct();
         }
      

  8.   

    参考:
    ----------------------------------------
        protected void PosButton_Click(object sender, EventArgs e)
        {
            string Action = ((Button)sender).CommandArgument;
            int itemIndex = ((DataListItem)((Button)sender).NamingContainer).ItemIndex;
            string id = DataList1.DataKeys[itemIndex].ToString();
            switch (Action)
            {
                case "Delete":
                    MyDoSql.ExcuteSql("delete from CM_Article where Id=" + id);
      

  9.   

      前台<asp:Repeater ID="repCaseType" runat="server">
                  <HeaderTemplate>
                      <table width="100%" border="0" align="center" cellpadding="2" cellspacing="0" class="sys_list_table"
                          bgcolor="#FFFFFF">
                          <tr class="TR_BG">
                              <td align="center" valign="middle" class="sys_topBg">
                                  ID
                              </td>
                              <td align="center" valign="middle" class="sys_topBg">
                                  类别名称
                              </td>
                              <td align="center" valign="middle" class="sys_topBg">
                                  操作
                              </td>
                          </tr>
                  </HeaderTemplate>
                  <ItemTemplate>
                      <tr class="TR_BG_list" onmouseover="this.style.backgroundColor='#BEFBD1'" onmouseout="this.style.backgroundColor='#FFFFFF'">
                          <td align="center" valign="middle">
                              <%#Eval("id") %>
                          </td>
                          <td align="center" valign="middle">
                              <%#Eval("name") %>
                          </td>
                          <td align="center" valign="middle">
                              <a href='CaseTypeUpdate.aspx?id=<%#Eval("id") %>' class="list_link">
                                  <img src="Images/edit.gif" border="0" alt="修改" />
                              </a><a href='CaseTypeList.aspx?action=del&id=<%#Eval("id") %>' class="list_link"
                                  onclick="{if(confirm('确认删除吗?')){return true;}return false;}">
                                  <img src="Images/del.gif" border="0" alt="删除" /></a>
                          </td>
                      </tr>
                  </ItemTemplate>
                  <FooterTemplate>
                      </table>
                  </FooterTemplate>
              </asp:Repeater>后台 protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {            DisplayCaseType();//绑定案例类别信息
            }
            if (Request["action"] != null)
            {
                int id = Convert.ToInt32(Request["id"]);
                DelPro(id);//删除
            }
        }    /// <summary>
        /// 执行删除
        /// </summary>
        /// <param name="id"></param>
        public void DelPro(int id)
        {        int result = CaseTypeManager.DelType(id);        MessageBox.ShowAndRedirect(this, "删除成功", "CaseTypeList.aspx");
        }够明白的了吧
      

  10.   

    都蛮好的,一般是用itemCommand事件执行
      

  11.   

    string mysql = "SELECT * FROM testbhproduct order by id desc";  我的这个sql语句这样写对吗?