我在GridView中自定义了删除功能,用ScriptManager实现页面的无刷新,第一次点击“删除”后数据库已实现记录的删除,但页面没变化,第二次点击“删除”后就能看到上一次的删除结果。怎样才能点击删除就能无刷新的删除呢,我附上代码麻烦各位高手指点。前台代码:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Temp.aspx.cs" Inherits="Temp" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>无标题页</title>
</head>
<body>
    <form id="form1" runat="server">
    <asp:ScriptManager ID="ScriptManager1" runat="server">
    </asp:ScriptManager>
    <asp:UpdatePanel ID="UpdatePanel1" runat="server">
        <ContentTemplate>
            <asp:GridView ID="GridView1" runat="server" 
    onrowcommand="GridView1_RowCommand">
                <Columns>
                    <asp:TemplateField ShowHeader="False">
                        <ItemTemplate>
                            <asp:LinkButton ID="LinkButton1" runat="server" 
                            CommandName="mydelete" CommandArgument='<%# Eval("ArticleID") %>'>删除</asp:LinkButton>
                        </ItemTemplate>
                    </asp:TemplateField>
                </Columns>
            </asp:GridView>
        </ContentTemplate>
    </asp:UpdatePanel>
    </form>
</body>
</html>后台代码:
public partial class Temp : System.Web.UI.Page
{
    public void ArticleBind()
    {
        string sqlstr = "select ArticleID ,Title,Dateline ,ReadNum,CommentNum ,State from Article";
        GridView1.DataSource = SqlData.ExceDS(sqlstr);
        //获取或设置GridView控件中的主键字段
        GridView1.DataKeyNames = new string[] { "ArticleID" };
        //从数据中绑定数据到列表控件中;
        GridView1.DataBind();   
    }
    protected void Page_Load(object sender, EventArgs e)
    {
        ArticleBind();        
    }    protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
    {
        if (e.CommandName.Equals("mydelete"))//执行删除
        {
            string strsql = "delete  from Article where ArticleID='" + Convert.ToInt32(e.CommandArgument) + "'";
            bool delete = SqlData.ExceSql(strsql);            if (delete)
            {
                Response.Write("<script>alert('删除成功')</script>");
                GridView1.DataBind();            }
            else
            {
                Response.Write("<script>alert('删除失败')</script>");
            }        } 
    }
}

解决方案 »

  1.   

    我在GridView中自定义了删除功能,用ScriptManager实现页面的无刷新,
    第一次点击“删除”后数据库已实现记录的删除,但页面没变化

     执行删除后 重新绑定数据
    protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
      {
      if (e.CommandName.Equals("mydelete"))//执行删除
      {
      string strsql = "delete from Article where ArticleID='" + Convert.ToInt32(e.CommandArgument) + "'";
      bool delete = SqlData.ExceSql(strsql);  if (delete)
      {
      Response.Write("<script>alert('删除成功')</script>");
      //GridView1.DataBind();
    ArticleBind();

      }
      else
      {
      Response.Write("<script>alert('删除失败')</script>");
      }  } 
      }
      

  2.   

    [Quote=引用 1 楼 lovesheng1212 的回复:]
    我在GridView中自定义了删除功能,用ScriptManager实现页面的无刷新,
    第一次点击“删除”后数据库已实现记录的删除,但页面没变化 执行删除后 重新绑定数据
    试过了,还是不行。
      

  3.   

     Response.Write("<script>alert('删除成功')</script>");
    =>
    ScriptManager.RegisterStartupScript(UpdatePanel1,GetType(),"success","alert('删除成功');",true);
      

  4.   

    感觉这个比较烦,具体没有研究过,有时行有时不行的(没有具体探究),你ArticleBind();之后,你调用一次UpdatePanel1。update这个方法,肯定可以的
      

  5.   

    参考相关:
    http://www.cnblogs.com/insus/articles/1944295.html