[ASP.NET]Repeater的使用方法
来源:互联网 发布:卡梅伦与猪 知乎 编辑:程序博客网 时间:2024/05/17 21:46
ASP.NET控件第三篇----Repeater
首先是HTML代码
为控件绑定数据的方法 Text='<%#Eval("")%>'
<asp:Repeater ID="rpStudent" runat="server" OnItemCommand="rpStudento_ItemCommand"> <HeaderTemplate><%--存放表头--%> <table style="width: 100%; white-space: nowrap"> </HeaderTemplate> <ItemTemplate><%--存放需要重复生成的行,即需要重复生成的行的一个模板,只能包含一对<tr></tr>--%> <tr> <td style="width: 130px"> <asp:Label ID="labStudentName" runat="server" Text="学生姓名"></asp:Label></td> <td> <asp:TextBox ID="tbStudentName" runat="server" Text='<%#Eval("StudentName")%>'></asp:TextBox> </td> <td> <asp:Label ID="labStudentNo" runat="server" Text="学生学号"></asp:Label></td> <td> <asp:TextBox ID="tbStudentNo" runat="server" Text='<%#Eval("StudentNo")%>'></asp:TextBox></td> <td> <asp:LinkButton ID="lnkDel" runat="server" Text="删除" CommandName="Delete"></asp:LinkButton> <asp:HiddenField ID="hidStudentID" runat="server" Value='<%#Eval("StudentID") %>' /> </td> </tr> </ItemTemplate> <FooterTemplate><%--存放表格其他的部分--%> <tr> <td colspan="4"> <asp:LinkButton ID="lnkNewStudentInfo" runat="server" Text="新增" commandName="New"></asp:LinkButton> </td> </tr> </table> </FooterTemplate> </asp:Repeater> <asp:Button ID="btnSaveCustInfo" runat="server" OnClick="btnSaveCustInfo_Click" Text="保存" />
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<string[]> list = new List<string[]>(); 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; } }
0 0
- [ASP.NET]Repeater的使用方法
- asp.net Repeater控件的使用方法
- asp.net关于repeater嵌套repeater的方法
- asp.net 中repeater控件的使用
- asp.net 中repeater控件的使用
- asp.net 中repeater控件的使用
- ASP.NET Repeater控件的嵌套使用
- 【ASP.net】解析Repeater 控件的模板
- 《ASP.NET》数据的绑定—Repeater
- asp.net webForm中的Repeater的用法
- ASP.NET的DataList和Repeater控件
- asp.net Repeater 百萬級分頁
- asp.net Repeater 编辑
- asp.net Repeater
- asp.net Repeater嵌套
- ASP.NET Repeater控件
- ASP.NET:Repeater 留言板
- Asp.net -Repeater用法
- 好用的eclipse插件butterknife
- C语言替换文件某一行
- Android的UI简要汇总,后期再更新
- Application.StartupPath和System.Environment.CurrentDirectory的区别
- Android OTA升级原理和流程分析(三)---Android系统的三种启动模式
- [ASP.NET]Repeater的使用方法
- redis实现有序队列
- 苹果系统升级OS X EL Capitan后cocoapod安装
- 使用javascript原生XMLHttpRequest对象进行ajax交互
- Android OTA升级原理和流程分析(四)---Android系统Recovery模式的工作原理
- java入门到精通学习笔记《1》
- 《飞机游戏》
- script引用放置位置
- 单元测试mock框架——jmockit实战