aspx页面
<td align="center" class="tdListFontSize"><asp:LinkButton ID="lbtDelete" runat="server" OnClientClick="return confirm('确定要删除吗?')" CommandName="Delete">删除</asp:LinkButton></td>aspx.cs页面
    protected void Repeater1_ItemCommand(object source, RepeaterCommandEventArgs e)
    {
        if (e.CommandName == "Delete")
        {
            //Response.Write(e);
            int affectRow = 0;     
            StringBuilder sql = new StringBuilder("DELETE FROM sy_contract WHERE company_id='")
            .Append(e.CommandArgument.ToString().Substring(0,4))
            .Append("'");想用e.CommandArgument来确定哪个产品的id,然后将有关这id的记录给删掉,但执行时提示  StringBuilder sql = new StringBuilder("DELETE FROM sy_contract WHERE company_id='")
            .Append(e.CommandArgument.ToString().Substring(0,4))
            .Append("'");用户代码未处理ArgumentOutOfRangeException索引和长度必须引用该字符串内的位置。
参数名: length

解决方案 »

  1.   

    StringBuilder sql = new StringBuilder("DELETE FROM sy_contract WHERE company_id='")
      .Append(e.CommandArgument.ToString().Substring(0,4))
      .Append("'");
    e.CommandArgument的长度是不是太小了.
      

  2.   

    e.CommandArgument的长度是不是太小了是什么意思?
    不是很明白? 怎么看这个的长度啊?因为是初学,我想问e.CommandArgument这个能否将要删除的相关项的id获取到,然后按照这个id删除相关记录?
      

  3.   

    StringBuilder sql = new StringBuilder("DELETE FROM sy_contract WHERE company_id='");
    if(e.CommandArgument.ToString().Length > 4){ 
     sql.Append(e.CommandArgument.ToString().Substring(0,4));
    } else {
     sql.Append(e.CommandArgument.ToString();
    }
     sql .Append("'");