【问题标题】:Multiple delete function deletes only one row in repeater control多重删除功能只删除中继器控制中的一行
【发布时间】:2014-07-29 08:26:57
【问题描述】:

我有 2 个中继器控件一个内一个,实际上我正在显示来自两个不同表的内容,我为每一行添加了复选框以使用单击按钮删除多行,但在选择多个复选框后删除查询仅删除一行一次。我只是在转发器控制下添加了 checkobx,我试图找出异常但堆栈没有显示它!以下是我的代码隐藏:

protected void btnDeleteNews_Click(object sender, EventArgs e)
{

    foreach (RepeaterItem item in rptMainBlock.Items)
    {

        if ((item.FindControl("chkDel") as CheckBox).Checked)
        {
            string newsId = (item.FindControl("lblNewsId") as Label).Text;
            cmd = new SqlCommand("DELETE FROM newsImageGal where newsId IN (SELECT newsId from news where newsId=@newsId);DELETE from news where newsId=@newsId", con);
            con.Open();
            cmd.Parameters.AddWithValue("@newsId", newsId);
            cmd.ExecuteNonQuery();

            this.Page.ClientScript.RegisterStartupScript(this.GetType(), "ex", "alert('Selected News Deleted Successfully');", true);
            con.Close();
            Response.Redirect("deleteNews.aspx");

        }
        else
        {
            this.Page.ClientScript.RegisterStartupScript(this.GetType(), "ex", "alert('No Data Deleted');", true);
        }
    }

}

请告诉我为什么会这样。

【问题讨论】:

    标签: c# asp.net repeater


    【解决方案1】:

    问题是你在循环中重定向:

    foreach (RepeaterItem item in rptMainBlock.Items)
    {
        // delete ..
        Response.Redirect("deleteNews.aspx");  // aborts this thread and ends the page's life-cycle
    }
    

    我假设你只想在最后做一次:

    foreach (RepeaterItem item in rptMainBlock.Items)
    {
        // delete ..
    }
    Response.Redirect("deleteNews.aspx");
    

    但是,当您重定向到另一个页面时,alert('Selected News Deleted Successfully'); 也毫无意义。

    【讨论】:

      猜你喜欢
      • 2016-11-01
      • 1970-01-01
      • 2023-04-03
      • 1970-01-01
      • 2018-01-15
      • 2012-12-23
      • 1970-01-01
      • 2023-03-14
      • 1970-01-01
      相关资源
      最近更新 更多