none
gridview删除 RRS feed

  • 问题

  • 在执行的时候数据已经删除了,但还是停留在删除前的页面,而且也没有提示删除成功,GridView1_RowDeleting事件没有执行,麻烦大虾帮忙,谢谢!!!

    代码如下:

    <asp:GridView ID="GridView1" runat="server" AllowPaging="True"
        AllowSorting="True" AutoGenerateColumns="False"
            Width="693px" onselectedindexchanged="GridView1_SelectedIndexChanged"
                    onrowdeleting="GridView1_RowDeleting" >
        <Columns>
            <asp:BoundField DataField="courseId" HeaderText="序号" InsertVisible="False"
                ReadOnly="True" SortExpression="courseId" >
            <ItemStyle HorizontalAlign="Center" VerticalAlign="Middle" />
            </asp:BoundField>
            <asp:BoundField DataField="content" HeaderText="题目" SortExpression="content" >
            <ItemStyle HorizontalAlign="Center" VerticalAlign="Middle" />
            </asp:BoundField>
            <asp:CommandField HeaderText="详细" SelectText="详细" ShowSelectButton="True">
            <HeaderStyle ForeColor="#0033CC" />
            <ItemStyle HorizontalAlign="Center" VerticalAlign="Middle" />
            </asp:CommandField>
            <asp:TemplateField HeaderText="删除" ShowHeader="False">
                <ItemTemplate>
                    <asp:LinkButton ID="LinkButton1" runat="server" CausesValidation="False"
                        OnClientClick="return confirm('你确定要删除吗?')"  Text="删除" CommandName="Delete" ></asp:LinkButton>
                </ItemTemplate>
                <HeaderStyle ForeColor="#0033CC" />
                <ItemStyle HorizontalAlign="Center" VerticalAlign="Middle" />
            </asp:TemplateField>
        </Columns>
    </asp:GridView>

    protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
        {
            string courseId = GridView1.Rows[e.RowIndex].Cells[0].Text;
            using (SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["connStr"].ConnectionString))
            {
                conn.Open();
                SqlCommand cmd = new SqlCommand("delete FROM SelectOnly where courseId=" + courseId, conn);
                int i = cmd.ExecuteNonQuery();
                if (i > 0)
                {
                    Response.Write("<script>alert('删除成功!')</script>");
                }
                else
                {
                    Response.Write("<script>alert('删除失败!')</script>");
                }
            }
            //重新绑定数据
            ShowAllCourse();
        }


    用高人的知识武装自我!
    2010年9月4日 10:39

答案

  • 有几个问题需要注意下:

    一、string courseId = GridView1.Rows[e.RowIndex].Cells[0].Text; 确定在数据库中courseID为唯一值?建议根据主键删除

    如:string id = this.GvProduct.DataKeys[e.RowIndex].Value.ToString(); //此id为数据库主键

    二、是否启用页面或控件缓存?

    三、根据你的问题,没有提示“删除成功”字样,你需要设置断点,查看返回的i值,是否大于0

    2010年9月4日 14:26

全部回复

  • cmd.ExecuteNonQuery() 返回的是什么,是整数吗?
    2010年9月4日 10:45
  • 有几个问题需要注意下:

    一、string courseId = GridView1.Rows[e.RowIndex].Cells[0].Text; 确定在数据库中courseID为唯一值?建议根据主键删除

    如:string id = this.GvProduct.DataKeys[e.RowIndex].Value.ToString(); //此id为数据库主键

    二、是否启用页面或控件缓存?

    三、根据你的问题,没有提示“删除成功”字样,你需要设置断点,查看返回的i值,是否大于0

    2010年9月4日 14:26