[ASP.NET]Repeater的使用方法

ASP.NET控件第三篇----Repeater

首先是HTML代码

为控件绑定数据的方法 Text='<%#Eval("")%>'


            <%--存放表头--%>  
                <%--存放需要重复生成的行,即需要重复生成的行的一个模板,只能包含一对--%>  
                <%--存放表格其他的部分--%>
                



C#的代码,第一次加载页面的时候绑定数据

protected void Page_Load(object sender, EventArgs e)
        {
            //第一次加载绑定数据,一定要加(!IsPostBack),否则PostBack会报错
            if (!IsPostBack)
            {
                InitData();
                DataBinds();
            }
        }
        protected void InitData()//生成一个空的DataTable
        {
            try
            {
                DataTable dt = new DataTable();
                dt.Columns.Add("StudentID", typeof(string));
                dt.Columns.Add("StudentName", typeof(string));
                dt.Columns.Add("StudentNo", typeof(string));

                for (int i = 0; i < 1; i++)
                {
                    DataRow dr = dt.NewRow();
                    dr["StudentID"] = "";
                    dr["StudentName"] = "";
                    dr["StudentNo"] = "";
                    dt.Rows.Add(dr);
                }
                ViewState.Add("Data", dt);
            }
            catch (Exception ex)
            {
                throw ex;
            }

        }
        protected void DataBinds()//绑定数据
        {
            rpStudent.DataSource = ViewState["Data"] as DataTable;
            rpStudent.DataBind();
        }

Repeater中的所有控件操作可以放在 OnItemCommand中,在控件中增加 CommandName属性

自定义一个名字,以便执行OnItemCommand中对应的操作

在本例子中,Repeater有两个LinkButton分别执行新增和删除的操作

对应的CommandName分别为New和Delete

OnItemCommand的C#代码如下

  protected void rpStudento_ItemCommand(object source, RepeaterCommandEventArgs e)
        {
            try
            {
                if (e.CommandName == "Delete")//删除学生信息
                {

                    string ls_StudentID = (e.Item.FindControl("hidStudentID") as HiddenField).Value;
                        //判断Item的数目,大于一条,直接删除数据
                        if (rpStudent.Items.Count > 1)
                        {
                            DataTable dt = CopyFormData();//复制数据

                            dt.Rows.RemoveAt(e.Item.ItemIndex);//移除Item

                            ViewState.Add("Data", dt);

                            DataBinds();//重新绑定数据
                        }
                         //Item数目等于1,删除数据之后新增一条空的记录
                        else
                        {
                            DataTable dt = CopyFormData();//复制数据
                            dt.Rows.RemoveAt(e.Item.ItemIndex);//移除Item

                            DataRow dr = dt.NewRow();//新增空行

                            dt.Rows.Add(dr);

                            ViewState.Add("Data", dt);

                            DataBinds();//重新绑定数据
                        }
                    
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
            try
            {
                if (e.CommandName == "New")//新增学生信息
                {
                    DataTable dt = CopyFormData();//复制数据

                    DataRow dr = dt.NewRow();//新增一行

                    dt.Rows.Add(dr);//将新增的行加入Datatable中

                    ViewState.Add("Data", dt);

                    DataBinds();//重新绑定数据
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }

        }
        protected DataTable CopyFormData()//复制数据
        {
            DataTable dt = (ViewState["Data"] as DataTable).Clone();
            try
            {
                foreach (RepeaterItem ri in rpStudent.Items)
                {
                    DataRow dr = dt.NewRow();
                    dr["StudentID"] = (ri.FindControl("hidStudentID") as HiddenField).Value;
                    dr["StudentName"] = (ri.FindControl("tbStudentName") as TextBox).Text;
                    dr["StudentNo"] = (ri.FindControl("tbStudentNo") as TextBox).Text;
                    dt.Rows.Add(dr);
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
            return dt;
        }

获取Repeater数据的方法

protected void btnSaveCustInfo_Click(object sender, EventArgs e)
        {
            try
            {
                List list = new List();
                list.Clear();
                for (int i = 0; i < rpStudent.Items.Count; i++)
                {
                    string ls_StudentName = (rpStudent.Items[i].FindControl("tbStudentName") as TextBox).Text;
                    string ls_StudentNo = (rpStudent.Items[i].FindControl("tbStudentNo") as TextBox).Text;
                    string ls_StudentID = (rpStudent.Items[i].FindControl("hidStudentID") as HiddenField).Value;
                    string info = ls_StudentName + "," + ls_StudentNo + "," + ls_StudentID;
                    string[] info_Array = info.Split(',');
                    list.Add(info_Array);
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }




你可能感兴趣的:(ASP控件的使用)