日期:2014-05-17  浏览次数:20975 次

GridView删除事件,点击删除后,GridView变空白,要再点击搜索结果才出现,想很久没解决
我的 RowDeleting事代码如下
        string strDelet = @"delete from [GROUPUSER]  WHERE USERID in( select USERID from [USER] where LOGONID='"+gvList.DataKeys[e.RowIndex].Value.ToString()+"')";
        SqlCommand sqlcom = new SqlCommand(strDelet,Conn());
        sqlcom.ExecuteNonQuery();
        Conn().Close();
        Response.Write("<script>alert('删除成功!')</script>");
        this.gvList.DataBind();
GridView select String ?deleting

------解决方案--------------------
引用:
 调用gvList.DataBind(),这个方法不行,还要自己写个绑定方法,如下 
    private void BindData()
    {
        //将数据部署到GridView中
        string sqlStr = @"select LOGONID,USERNAME,GROUPNAME from [USER] left join [GROUPUSER] 
        on [USER].USERID=[GROUPUSER].USERID right join [GROUP] on [GROUP].GROUPID=[GROUPUSER].GROUPID where GROUPNAME='" + ddlSearch.SelectedValue + "'";
        SqlDataAdapter dad = new SqlDataAdapter(sqlStr, Conn());
        DataSet dst = new DataSet();
        dad.Fill(dst);
        gvList.DataSource = dst;
        gvList.DataBind();

    }
,不过还是不明白,到底什么时候才需要调用这个方法,什么情况下可以直接用.DataBind()方法。

执行 this.gvList.DataBind() 只是绑定数据,前提是你已经用正确的dst给它赋值了。(这个dst恰好是你用正确的查询条件得到的查询结果)。

从你在问题中贴出的代码,无法看出你给 .DataSource 传送的是什么值。

而从你后边的代码来看,不管之前你传送的是什么值,你都重新查询并且重新给 DatsSource 赋值了。

或许你只是忘记了给这个属性赋值。