datalist 从数据库中读取数据来显示图片列表,当删除一个图片时候,datalist无显示(其实数据库已经成功删除)这是为什么呢?
删除后我已经对DataList重新绑定了。

解决方案 »

  1.   

    你是怎么重新绑定的,看看代码?删除后仅仅datalist.DataBind()是不行的。
    要重新指定datalist的数据源:datalist.DataSource = ...再datalist.DataBind()
      

  2.   

    public partial class ascx_ImageList : System.Web.UI.UserControl
    {
        public String userName = null;    protected void Page_Load(object sender, EventArgs e)
        {
            
            HttpCookie cookie = Request.Cookies["user"];
            if (cookie != null)
                userName = cookie["userName"];
            else
                Response.Redirect("/Login.aspx");        if (!IsPostBack)
                bindData(userName);
        }    //数据绑定
        public void bindData(String userName)
        {
            if (userName == null)
                Response.Redirect("/Login.aspx");        OpDB opDb = new OpDB();
            DataSet ds = opDb.getUserPicData(userName);        PagedDataSource pds = new PagedDataSource();
            pds.DataSource = ds.Tables[0].DefaultView;
            pds.AllowPaging = true;
            pds.PageSize = 1; //每页显示记录数
            int currentPage = Convert.ToInt32(this.currentPage.Text) - 1;
            pds.CurrentPageIndex = currentPage;        if (currentPage == 0)
            {
                this.home.Enabled = false;
                this.previous.Enabled = false;
                this.next.Enabled = true;
                this.end.Enabled = true;
            }
            else if (currentPage == pds.PageCount - 1)
            {
                this.home.Enabled = true;
                this.previous.Enabled = true;
                this.next.Enabled = false;
                this.end.Enabled = false;
            }
            else
            {
                this.home.Enabled = true;
                this.previous.Enabled = true;
                this.next.Enabled = true;
                this.end.Enabled = true;
            }        this.totalPage.Text = pds.PageCount.ToString();
            this.imageList.DataSource = pds;
            this.imageList.DataBind();
        }    //分页
        protected void home_Click(object sender, EventArgs e)
        {
            this.currentPage.Text = "1";
            bindData(userName);
        }    protected void previous_Click(object sender, EventArgs e)
        {
            int temp = Convert.ToInt32(this.currentPage.Text) - 1;
            this.currentPage.Text = temp.ToString();
            bindData(userName);
        }
        protected void next_Click(object sender, EventArgs e)
        {
            int temp = Convert.ToInt32(this.currentPage.Text) + 1;
            this.currentPage.Text = temp.ToString();
            bindData(userName);
        }    protected void end_Click(object sender, EventArgs e)
        {
            this.currentPage.Text = this.totalPage.Text;
            bindData(userName);
        }
        //删除图片
        protected void delete_Click(object sender, EventArgs e)
        {        LinkButton obj = (LinkButton)sender;
            int pid = Convert.ToInt32(obj.CommandArgument);        String path = MapPath("/"); //当前网站根目录路径
             OpDB opDb = new OpDB();        opDb.deleteImage(pid, path);
            bindData(userName); //删除后重新绑定
            if (opDb.deleteImage(pid, path))
                Response.Redirect("/secure/Default.aspx");
       
        }
    }已经重新获取数据源了,我点一一次删除的时候没反应,点第二次的时候才删除了,好像每个图片要点两次哦。
      

  3.   

       
    给个参考吧,这个是repeater的。
    protected void MessagesMenu_ItemCommand(object source, RepeaterCommandEventArgs e)
            {
                if (e.CommandName == "D")
                {
                    int result = DelUserMessage(Convert.ToInt32(e.CommandArgument));
                    if (result == 1)
                    {
                        InitMessage(ASPxPager1, Convert.ToInt32(Session["userid"]));
                        lblShowMsg.Text = "删除成功";
                    }
                }
             }
      

  4.   

    也有可能 用Response.Redirect("/secure/Default.aspx"); 重写链接也没有,必须手动点链接或者刷新页面才有用。这个怎么解决呢?
      

  5.   

    设置页面缓存 this.Response.Expires=0;
      

  6.   

    this.Response.Expires=0; 这个没有 还是要点两次!