标签:style blog color 使用 os io 数据 ar
网页上用来展示列表的数据,发现还是Repeater比GridView,DetailView之类的要灵活些,所以近期用到了就总结下遇到的一些情况,保留下来以备之后查阅,不用现问度娘了...
自己摸索的,很可能有不正确的地方,望前辈指正。
1. Repeater控件绑定可以是数组,比如某个类的实例数组
1 //前台代码 2 <asp:Repeater ID="repeater" runat="server" 3 onitemcommand="repeater_ItemCommand" > 4 <HeaderTemplate> 5 <table><thead><tr> 6 <td>ID</td><td>Name</td><td>修改</td><td>删除</td> 7 </tr></thead> 8 </HeaderTemplate> 9 <ItemTemplate> 10 <asp:Panel ID="pnl_display" runat="server" Visible="true"> 11 <tr> 12 <td><%#Eval("PKID") %></td> 13 <td><a href=‘NewsSmallClassManage.aspx?bgid=<%#Eval("PKID") %>‘><%#Eval("FirstLevelName")%></a></td> 14 <td><asp:LinkButton ID="lbtnModify" CommandName="edit" runat="server" Text="修改" ></asp:LinkButton></td> 15 <td><asp:LinkButton ID="lbtnDelete" CommandName="delete" CommandArgument=‘<%#Eval("PKID") %>‘ runat="server" Text="删除" OnClientClick=‘return confirm("确定要删除该大类吗?");‘></asp:LinkButton></td> 16 </tr> 17 </asp:Panel> 18 <asp:Panel ID="pnl_edit" runat="server" Visible="false"> 19 <tr> 20 <td><%#Eval("PKID") %></td> 21 <td><asp:TextBox ID="txtBigClassName" runat="server" Text=‘<%#Eval("FirstLevelName") %>‘></asp:TextBox></td> 22 <td><asp:LinkButton ID="lbtUpdate" CommandName="update" CommandArgument=‘<%#Eval("FirstLevelName") %>‘ runat="server" Text="更新"></asp:LinkButton></td> 23 <td><asp:LinkButton ID="lbtCancel" CommandName="cancel" runat="server" Text="取消"></asp:LinkButton></td> 24 </tr> 25 </asp:Panel> 26 </ItemTemplate> 27 <FooterTemplate> 28 </table> 29 </FooterTemplate> 30 </asp:Repeater>
1 //后台代码 2 NewsClass[] array = IS.Business.NewsClassBLL.GetFirstLevelClass(); 3 repeater.DataSource = array; 4 repeater.DataBind();
2. 使用CommondArgument向后台传递参数,在ItemCommand事件中处理控件内按钮的命令相应
protected void repeater_ItemCommand(object source, RepeaterCommandEventArgs e) { switch (e.CommandName) { case "edit": ((Panel)e.Item.FindControl("pnl_display")).Visible = false; ((Panel)e.Item.FindControl("pnl_edit")).Visible = true; break; case "cancel": ((Panel)e.Item.FindControl("pnl_display")).Visible = true; ((Panel)e.Item.FindControl("pnl_edit")).Visible = false; break; case "delete": try { IS.Business.NewsClassBLL.Delete(int.Parse(e.CommandArgument.ToString())); this.bindData(); } catch (Exception ex) { Functions.AlertMsg(ex.Message, Page); } break; case "update": string oldname = e.CommandArgument.ToString(); string newname = ((TextBox)e.Item.FindControl("txtBigClassName")).Text; try { IS.Business.NewsClassBLL.RenameFirstLevelClassName(oldname, newname); this.bindData(); } catch (Exception ex) { Functions.AlertMsg(ex.Message, Page); } break; default: break; } }
3. 两个Panel用来实现类似就地编辑的功能。好像用PlaceHolder更好一点,不会生成额外的html标签。
4. 被绑定的类里面还有一个其他类的实例作为其属性成员,绑定其属性成员的某个属性时使用:
<%#DataBinder.Eval(((IS.Model.Exhibition)Container.DataItem).Area,"Name") %>
5. 加个行号:
<%#Container.ItemIndex+1 %>
6. 格式化输入某些变量,以时间为例:
<%#DataBinder.Eval(Container.DataItem,"StartTime","{0:yyyy-MM-dd}") %>
Repeater控件使用中的一些小问题,布布扣,bubuko.com
标签:style blog color 使用 os io 数据 ar
原文地址:http://www.cnblogs.com/Alloc/p/3916170.html