码迷,mamicode.com
首页 > 其他好文 > 详细

Repeater控件使用中的一些小问题

时间:2014-08-16 12:19:50      阅读:181      评论:0      收藏:0      [点我收藏+]

标签: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

Repeater控件使用中的一些小问题

标签:style   blog   color   使用   os   io   数据   ar   

原文地址:http://www.cnblogs.com/Alloc/p/3916170.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!