• AspNetPager查询分页问题(点击页码,不再是查询后的数据集)viewstate解决


      public string SQL = "select * from Memorandum";
            protected void Page_Load(object sender, EventArgs e)
            {
                if (!IsPostBack)
                {
                    ViewState["SQL"] = SQL;
                    BindData();
                }
                if (Request.QueryString["MId"] != null)
                {
                    Delete(int.Parse(Request.QueryString["MId"].ToString()));
                }
            }
    
            protected void AspNetPager1_PageChanged(object sender, EventArgs e)
            {
                BindData();
            }
           
            void BindData()
            {
                PagedDataSource pds = new PagedDataSource();
                IList<MemorandumInfo> Infos = new DAL.Memorandum().GetAllMemorandumsBySQL(ViewState["SQL"].ToString());
    
                pds.DataSource = Infos;
                pds.AllowPaging = true;
                pds.PageSize = 10;//取控件的分页大小
                pds.CurrentPageIndex = this.AspNetPager1.CurrentPageIndex - 1;//显示当前页
                //设置控件
                this.AspNetPager1.RecordCount = Infos.Count;//记录总数
                this.AspNetPager1.PageSize = 10;
                Repeater1.DataSource = pds;
                Repeater1.DataBind();
            }
            void Delete(int MId)
            {
                new Memorandum().DeleteMemorandum(MId);
                Response.Write("<script>alert('成功删除该条备忘信息');location='?';</script>");
            }
            /// <summary>
            /// 查询
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
    
            protected void Button1_Click(object sender, EventArgs e)
            {
                if (DropDownList1.SelectedValue == "0")
                {
                    ViewState["SQL"] = "select * from Memorandum";
                    BindData();
                }
                else
                {
                    ViewState["SQL"] = "SELECT   MId, MemoTitle, MemoContent, MemoStartTime, MemoEndTime FROM  Memorandum WHERE (MemoEndTime - NOW() <=7)";
                    BindData();
                }
            }
        }
    

    ViewState 用来跟踪和保存控件的状态信息。否则这些信息可能会丢失,原因可能是这些值不随着 form 回发,或者根本就不在 page 的 html 中。
    ViewState 中保存着代码中改变的控件属性,通过代码绑定到控件的任何数据,以及由用户操作触发,回发的任何更改。
    ViewState 还提供了一个状态包(StateBag), 这是一个特殊的集合或字典(collection or dictionary), 可以用来保存,通过一个 key 来恢复任意的对象或者值。

    赋值:ViewState[key] = value;

    取值:value = ViewState[key];

  • 相关阅读:
    Reddit 转载 Drunk Post: Things I've learned as a Sr Engineer
    算法28 30 二叉树非递归遍历(前中后)
    C++ 子类构造函数初始化列表与基类关系
    算法31 leetcode102 二叉树的层序遍历
    C++由数组构建二叉树指针
    windows下编译源代码安装软件
    算法27 leetcode101 对称二叉树
    算法31 88. 合并两个有序数组
    c++:const修饰指针
    c++ 正则实现 千分位分割
  • 原文地址:https://www.cnblogs.com/wangzhenghua/p/3074313.html
Copyright © 2020-2023  润新知