<asp:DataList ID="DataList1" runat="server" RepeatColumns="6" OnEditCommand="DataList1_EditCommand"  OnDeleteCommand="DataList1_DeleteCommand" DataKeyField="Id">
        <ItemTemplate>
<asp:LinkButton ID="LinkButton1" runat="server" CommandName="edit">编辑</asp:LinkButton>
</ItemTemplate>
        </asp:DataList>protected void DataList1_EditCommand(object source, DataListCommandEventArgs e)
    {
        //this.DataList1.EditItemIndex = e.Item.ItemIndex;//编辑
        string id = DataList1.DataKeys[((DataListItem)((Button)sender).Parent).ItemIndex].ToString(); //当前上下文中不存在名称“sender”        Response.Redirect("Edit.aspx?ShowID=" + id + "");
    }这个哪个不对?

解决方案 »

  1.   

    protected void DataList1_EditCommand(object source, DataListCommandEventArgs e)你叫它到哪里去找sender,把source改成sender吧。
      

  2.   

    object source,改成object sender。这个应该是自动生成的,楼主难道自己写的。
      

  3.   

    protected void DataList1_EditCommand(object sender, DataListCommandEventArgs e) 
        { 
            //this.DataList1.EditItemIndex = e.Item.ItemIndex;//编辑 
            string id = DataList1.DataKeys[((DataListItem)((Button)sender).Parent).ItemIndex].ToString(); //当前上下文中不存在名称“sender”         Response.Redirect("Edit.aspx?ShowID=" + id + ""); 
        } 
      

  4.   

    是的
    我组件不怎么会用,原来用的asp的我改成sender之后有又有这个错误
    无法将类型为“System.Web.UI.WebControls.DataList”的对象强制转换为类型“System.Web.UI.WebControls.LinkButton”。
    一并帮我看下
      

  5.   

    string id = DataList1.DataKeys[e.Item.ItemIndex].ToString();
      

  6.   

     protected void DataList1_EditCommand(object source, DataListCommandEventArgs e)
        {
            //this.DataList1.EditItemIndex = e.Item.ItemIndex;//编辑 
            //string id = DataList1.DataKeys[((DataListItem)((Button)sender).Parent).ItemIndex].ToString(); //当前上下文中不存在名称“sender” 
            string id = DataList1.DataKeys[((DataListItem)((LinkButton)source).Parent).ItemIndex].ToString();
            Response.Redirect("Edit.aspx?ShowID=" + id + ""); 
        }
    不知道这样可不可以调试呢??没调试过。。只是猜测。。