首页 > 代码库 > Repeater的ItemCommand事件

Repeater的ItemCommand事件

Repeater一般只用来展示数据,如果要增删改查(CRUD)则用ListView更方便。

使用向导(强类型数据)来使用ListView会自动生成很多模板,免去手写模板代码的麻烦,再进行手工调整即可。 首先设定数据源,然后点击智能提示中的“配置ListView”,选择一种布局和样式,然后根据需要勾选“启用编辑”、“启用删除”、“启用插入”、“启用分页”,就会自动生成常用的模板。注意这只是提高开发效率的一个快捷方式,不是唯一的途径。

【LayoutTemplate】为布局模板,布局模板中必须有一个ID为【itemPlaceholder】的服务端控件,项占位符(4.0以后不需要),什么类型无所谓,不会被显示,itemPlaceholder前面就是相当于Repeater中的HeaderTemplate,itemPlaceholder后面就是相当于Repeater中的FooterTemplate,因此ListView中没有这两个模板。

【ItemTemplate】是每一项的模板,AlternatingItemTemplate是隔行显示的模板,和Repeater一样。EmptyDataTemplate为数据源没有数据的时候显示的内容(Insert也算数据),这样的话可以实现“没有查找结果”、“对不起,找不到您要找的数据”等,InsertItemTemplate为插入数据界面的模板,EditItemTemplate为编辑数据的模板,InsertItemTemplate,为插入数据的模板,SelectedItemTemplate为标记为Selected的行的模板。

1、生成的样式要提到style中,不要内联样式。

2、ItemTemplate里面一般也没必要用<asp:Label展示只读数据,所以直接输出<%# Eval("Name") %>

3、LayoutTemplate中必须有一个id为itemPlaceholder的服务端控件,之上为头,之下为尾。

4、LayoutTemplate表头内容要汉化,所有Template中的不需要显示的字段,比如Id,都要删掉。

  1 <%@ Page Title="" Language="C#" MasterPageFile="~/MasterPage.master" AutoEventWireup="true" CodeBehind="5ListView.aspx.cs" Inherits="Maticsoft.Web._5ListView" %>  2   3 <asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server">  4 </asp:Content>  5 <asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">  6   7     <asp:ListView ID="ListView1" runat="server" DataKeyNames="TypeId" DataSourceID="ObjectDataSource1" InsertItemPosition="LastItem">  8         <AlternatingItemTemplate>  9             <tr style="background-color: #FFFFFF;color: #284775;"> 10                 <td > 11                     <asp:Button ID="DeleteButton" runat="server" CommandName="Delete" Text="删除" /> 12                     <asp:Button ID="EditButton" runat="server" CommandName="Edit" Text="编辑" /> 13                 </td> 14 <%--                <td> 15                     <asp:Label Visible="false" ID="TypeIdLabel" runat="server" Text=<%# Eval("TypeId") %> /> 16                 </td>--%> 17                 <td> 18                     <asp:Label ID="TypeNameLabel" runat="server" Text=<%# Eval("TypeName") %> /> 19                 </td> 20                 <td> 21                     <asp:Label ID="PriceLabel" runat="server" Text=<%# Eval("Price") %> /> 22                 </td> 23                 <td> 24                     <asp:CheckBox ID="AddBedCheckBox" runat="server" Checked=<%# Eval("AddBed") %> Enabled="false" /> 25                 </td> 26                 <td> 27                     <asp:Label ID="BedPriceLabel" runat="server" Text=<%# Eval("BedPrice") %> /> 28                 </td> 29                 <td> 30                     <asp:Label ID="RemarkLabel" runat="server" Text=<%# Eval("Remark") %> /> 31                 </td> 32             </tr> 33         </AlternatingItemTemplate> 34         <EditItemTemplate> 35             <tr style="background-color: #999999;"> 36                 <td > 37                     <asp:Button ID="UpdateButton" runat="server" CommandName="Update" Text="更新" /> 38                     <asp:Button ID="CancelButton" runat="server" CommandName="Cancel" Text="取消" /> 39                 </td> 40 <%--                <td> 41                     <asp:TextBox Visible="false" ID="TypeIdTextBox" runat="server" Text=<%# Bind("TypeId") %> /> 42                 </td>--%> 43                 <td> 44                     <asp:TextBox ID="TypeNameTextBox" runat="server" Text=<%# Bind("TypeName") %> /> 45                 </td> 46                 <td> 47                     <asp:TextBox ID="PriceTextBox" runat="server" Text=<%# Bind("Price") %> /> 48                 </td> 49                 <td> 50                     <asp:CheckBox ID="AddBedCheckBox" runat="server" Checked=<%# Bind("AddBed") %> /> 51                 </td> 52                 <td> 53                     <asp:TextBox ID="BedPriceTextBox" runat="server" Text=<%# Bind("BedPrice") %> /> 54                 </td> 55                 <td> 56                     <asp:TextBox ID="RemarkTextBox" runat="server" Text=<%# Bind("Remark") %> /> 57                 </td> 58             </tr> 59         </EditItemTemplate> 60         <EmptyDataTemplate> 61             <table runat="server" style="background-color: #FFFFFF;border-collapse: collapse;border-color: #999999;border-style:none;border-width:1px;"> 62                 <tr> 63                     <td>未返回数据。</td> 64                 </tr> 65             </table> 66         </EmptyDataTemplate> 67         <InsertItemTemplate> 68             <tr style=""> 69                 <td > 70                     <asp:Button ID="InsertButton" runat="server" CommandName="Insert" Text="插入" /> 71                     <asp:Button ID="CancelButton" runat="server" CommandName="Cancel" Text="清除" /> 72                 </td> 73 <%--                <td> 74                     <asp:TextBox Visible="false" ID="TypeIdTextBox" runat="server" Text=<%# Bind("TypeId") %> /> 75                 </td>--%> 76                 <td> 77                     <asp:TextBox ID="TypeNameTextBox" runat="server" Text=<%# Bind("TypeName") %> /> 78                 </td> 79                 <td> 80                     <asp:TextBox ID="PriceTextBox" runat="server" Text=<%# Bind("Price") %> /> 81                 </td> 82                 <td> 83                     <asp:CheckBox ID="AddBedCheckBox" runat="server" Checked=<%# Bind("AddBed") %> /> 84                 </td> 85                 <td> 86                     <asp:TextBox ID="BedPriceTextBox" runat="server" Text=<%# Bind("BedPrice") %> /> 87                 </td> 88                 <td> 89                     <asp:TextBox ID="RemarkTextBox" runat="server" Text=<%# Bind("Remark") %> /> 90                 </td> 91             </tr> 92         </InsertItemTemplate> 93         <ItemTemplate> 94             <tr style="background-color: #E0FFFF;color: #333333;"> 95                 <td > 96                     <asp:Button ID="DeleteButton" runat="server" CommandName="Delete" Text="删除" /> 97                     <asp:Button ID="EditButton" runat="server" CommandName="Edit" Text="编辑" /> 98                 </td> 99               <%--  <td>100                     <asp:Label Visible="false" ID="TypeIdLabel" runat="server" Text=<%# Eval("TypeId") %> />101                 </td>--%>102                 <td>103                     <asp:Label ID="TypeNameLabel" runat="server" Text=<%# Eval("TypeName") %> />104                 </td>105                 <td>106                     <asp:Label ID="PriceLabel" runat="server" Text=<%# Eval("Price") %> />107                 </td>108                 <td>109                     <asp:CheckBox ID="AddBedCheckBox" runat="server" Checked=<%# Eval("AddBed") %> Enabled="false" />110                 </td>111                 <td>112                     <asp:Label ID="BedPriceLabel" runat="server" Text=<%# Eval("BedPrice") %> />113                 </td>114                 <td>115                     <asp:Label ID="RemarkLabel" runat="server" Text=<%# Eval("Remark") %> />116                 </td>117             </tr>118         </ItemTemplate>119         <LayoutTemplate>120             <table runat="server">121                 <tr runat="server">122                     <td runat="server">123                         <table id="itemPlaceholderContainer" runat="server" border="1" style="background-color: #FFFFFF;border-collapse: collapse;border-color: #999999;border-style:none;border-width:1px;font-family: Verdana, Arial, Helvetica, sans-serif;">124                             <tr runat="server" style="background-color: #E0FFFF;color: #333333;">125                                 <th runat="server" ></th>126                                 <%--<th runat="server">TypeId</th>--%>127                                 <th runat="server" style="width:800px">TypeName</th>128                                 <th runat="server">Price</th>129                                 <th runat="server">AddBed</th>130                                 <th runat="server">BedPrice</th>131                                 <th runat="server">Remark</th>132                             </tr>133                             <tr id="itemPlaceholder" runat="server">134                             </tr>135                         </table>136                     </td>137                 </tr>138                 <tr runat="server">139                     <td runat="server" style="text-align: center;background-color: #5D7B9D;font-family: Verdana, Arial, Helvetica, sans-serif;color: #FFFFFF">140                         <asp:DataPager ID="DataPager1" runat="server">141                             <Fields>142                                 <asp:NextPreviousPagerField ButtonType="Button" ShowFirstPageButton="True" ShowLastPageButton="True" />143                             </Fields>144                         </asp:DataPager>145                     </td>146                 </tr>147             </table>148         </LayoutTemplate>149         <SelectedItemTemplate>150             <tr style="background-color: #E2DED6;font-weight: bold;color: #333333;">151                 <td >152                     <asp:Button ID="DeleteButton" runat="server" CommandName="Delete" Text="删除" />153                     <asp:Button ID="EditButton" runat="server" CommandName="Edit" Text="编辑" />154                 </td>155 <%--                <td>156                     <asp:Label Visible="false" ID="TypeIdLabel" runat="server" Text=<%# Eval("TypeId") %> />157                 </td>--%>158                 <td>159                     <asp:Label ID="TypeNameLabel" runat="server" Text=<%# Eval("TypeName") %> />160                 </td>161                 <td>162                     <asp:Label ID="PriceLabel" runat="server" Text=<%# Eval("Price") %> />163                 </td>164                 <td>165                     <asp:CheckBox ID="AddBedCheckBox" runat="server" Checked=<%# Eval("AddBed") %> Enabled="false" />166                 </td>167                 <td>168                     <asp:Label ID="BedPriceLabel" runat="server" Text=<%# Eval("BedPrice") %> />169                 </td>170                 <td>171                     <asp:Label ID="RemarkLabel" runat="server" Text=<%# Eval("Remark") %> />172                 </td>173             </tr>174         </SelectedItemTemplate>175     </asp:ListView>176     <asp:ObjectDataSource ID="ObjectDataSource1" runat="server" DataObjectTypeName="Maticsoft.Model.RoomType" DeleteMethod="Delete" InsertMethod="Add" SelectMethod="GetModelList" TypeName="Maticsoft.BLL.RoomType" UpdateMethod="Update">177         <SelectParameters>178             <asp:Parameter Name="strWhere" Type="String" />179         </SelectParameters>180     </asp:ObjectDataSource>181 182 </asp:Content>
View Code

----------------------------------------------------------------------------------------------------------------------------------------

Repeater控件可以在模板中放置Button控件【Button】、【LinkButton】、【ImageButton】,模板中的按钮一般不写OnClick事件响应而是响应Repeater的ItemCommand事件

Button控件设定【CommandName】、【CommandArgument】属性,然后在ItemDataBound事件读取e的CommandName、CommandArgument属性就可以获得发生事件的命令和行参数了。

如果对数据进行了操作,则需要Repeater1.DataBind()来重新绑定,从数据库中刷新最新的数据

 1                 <tr onm ouseover="changecolor(this)" onm ouseout="returncolor(this)"> 2                     <td><%#Eval("TypeId") %></td> 3                     <td><%#Eval("TypeName") %></td> 4                     <td><asp:Label ID="lblprice" runat="server" Text=<%#Eval("Price") %>></asp:Label></td> 5                     <td><%#Eval("AddBed") %></td> 6                     <td><%#Eval("BedPrice") %></td> 7                     <td><input type="text" value=http://www.mamicode.com/"<%#Eval("Remark") %>" readonly="readonly"/></td> 8                     <td> 9                         <asp:Button ID="btndel" runat="server" Text="删除" CommandName="del" CommandArgument=<%#Eval("TypeId") %>/>10                         <asp:Button ID="btnedit" runat="server" Text="编辑" CommandName="edit" CommandArgument=<%#Eval("TypeId") %>/>11                     </td>12                 </tr>
 1         protected void Repeater1_ItemCommand(object source, RepeaterCommandEventArgs e) 2         { 3             int id = Convert.ToInt32(e.CommandArgument); 4  5             if (e.CommandName == "del") 6             { 7                 if (bll.Delete(id)) 8                 { 9                     Maticsoft.Common.MessageBox.Show(this, id.ToString()+"删除成功");10                     Repeater1.DataBind();//需要Repeater1.DataBind()来重新绑定,从数据库中刷新最新的数据11                 }                12             }13             else if (e.CommandName == "edit")14             {15                 Maticsoft.Common.MessageBox.Show(this, id.ToString());16             }17         }

Repeater的ItemCommand事件