Eval高级应用:1:用于显示时间 2:作为函数的参数 3:参数化显示?
<%#Eval("createdate","{0:yyyy年MM月dd日 HH时mm分ss秒}")%><%#Eval("type").ToString() == "normal" ? "普通会员" : "VIP会员"%><%# GetLoginCount(Eval("username").ToString())%>//获取登陆次数 protected string GetLoginCount(string username) { return new Niunan.Shop.DAL.Login_logDAO().ClacCount("username ='" + username + "'").ToString(); ; }<%#Eval("amount","{0:c}")%>
商品类别无限分类
商品类别表和商品详情表
shop_category : id,caname,pid,createdate 这里的pid就是父层的id
shop_product:id,createdate,proname,proimg,marketprice,memberprice,vipprice,state,guige,danwei,caid,prodesc,istj,isxp,isvip
shop_propl:id,createdate,username,title,body,pj,ip,proid
现在开始去数据库创建表:
这里住一个一个小细节,比如我们给一个 nvarchar 的字段一个默认值为 none.jpg 他会默认变为 N'none.jpg' 这里为什么有N呢?因为N表示 nvarchar,那后面的2个单引号呢?为什么不是双引号呢?字符串不是双引号么? 那是因为 SQL 中单引号表示字符串的开始和结束符号
如果希望默认值为空,那么就用 '' 来表示 , 如果是null 那就是用 null ,空和null是不一样的。
价格用 decimal(18, 2) 来表示,表示最长有18位整数,2位小数
外键的建立:外键:是本身表的一个字段,但是和另外一个表的主键想对应。
当我们的类别表,商品表和商品评论表都建立完毕后,开始使用动软生成器,生成3张表的 Model 层代码 和 DAL 层代码
将生成的代码考入到 项目中。下面建立后台的,产品分类页面。把增删查改,都放在这个页面。
repeater 里面 绑定 repeater
比如 我们先要循环输出大类,然后需要循环输出大类下面的小类。这个时候就需要嵌套 repeater 了
重点:1 外面的repeater循环的时候,里面的repeater的值如何获取? 我们选中外面的 repeater ,点击属性。选择 ItemDataBound,双击
//绑定二级类别 protected void rep0_ItemDataBound(object sender, RepeaterItemEventArgs e) { if (e.Item.ItemType==ListItemType.AlternatingItem || e.Item.ItemType==ListItemType.Item) { Button btnEdit = e.Item.FindControl("btnEdit") as Button; string pid = btnEdit.CommandArgument; Repeater rep1 = e.Item.FindControl("rep1") as Repeater; rep1.DataSource = new Niunan.Shop.DAL.CategoryDAO().GetListArray("pid=" + int.Parse(pid)); rep1.DataBind(); } }
这里的e.Item.ItemType==ListItemType.AlternatingItem || e.Item.ItemType==ListItemType.Item
----指触发对象的类型是repeater里的基本行或是替换行(简单的说是repeater里的所有数据项内容)
2:在嵌套的repeater的文本框,如果有修改。如何获取嵌套的 repeater 的子 repeater 的TextBox 文本的值?》
//修改类别 protected void Edit(object senders, EventArgs s) { string id = (senders as Button).CommandArgument; //如何查找这个文本的值呢?首先,我们找到刚才的这个button的上一级元素 NamingContainer //实际这个控件就是 然后再在这个控件里面 通过 FindControl 我们的 TextBox 的名字来获取值 string caname=((senders as Button).NamingContainer.FindControl("txtCaname") as TextBox).Text.ToString(); Niunan.Shop.Model.Category camo = cadao.GetModel(int.Parse(id)); if (camo!=null) { camo.caname = caname; cadao.Update(camo); } //修改成功之后,重新跳转到本页面 Response.Redirect(Request.Url.ToString()); }
下面是 前台的代码。