啤酒&灵感

在ASP.NET里,需要实现的效果是这样的:

 

从数据库里读取出所有的“商品分类”,比如“A类商品”,“B类商品”,“C类商品”。

 

然后在页面的上方 动态生成 对应的Button也好,link也好,反正是一系列可以点击的东西,它们的text属性(如果不是服务器端控件,那就是它显示的文字)就是具体的“商品分类”。

 

接着,点击刚才生成的某个控件,就在页面的中间部分动态加载该“商品分类”里的商品信息。(肯定要用Ajax,最后我用updatepanel实现了)

例如,点击了“A类商品”,那么页面中间部分就动态加载所有属于A类的 商品的信息。

 

 

如果用JS,我的想法是:

1,在服务器端 获取所有的分类信息,构造HTML代码输出;

2,用JS获取用户点击元素的text属性,反正就是显示的文字吧,具体叫什么我不知道;

3,JS里应该有个load("xxxx.aspx?id = xx")之类的方法吧?就是在框架里加载页面用的。。。

 

可问题的关键是   我完全不懂JS,上面的也是乱想而已。。。

 

 

吃完晚饭想了2个小时,没搞出来。

确实没办法,只有开瓶啤酒,边喝边看电视。

突然,灵感来了!

想法如下:

先建立一个用户控件,作为显示所有分类的容器。

根据返回的“商品分类” 是泛型,我遍历里面的每个item,在一个panel里动态添加控件,然后设置相关属性:

 

代码在VSS服务器上,我这里只是模拟一下:

 
  
public List < string > ls = new List < string > () { " 豆类 " , " 海产类 " , " 菌类 " , " 青菜类 " , " 中药类 " , " 特价蔬菜 " };
int i = 0 ;
foreach ( string s in ls)
{
Button bt
= new Button();
bt.ID
= i.ToString() + " ID " ;
bt.CommandName
= s;
bt.Text
= bt.ID = " ++ " + bt.CommandName;
Panel1.Controls.Add(bt);
bt.Command
+= new CommandEventHandler(bt_Command);
i
++ ;
}

 

 

 

然后利用 Page.FindControl() 访问主页面里的控件,将选择的类别传递过去。

之后就是常规处理,查询绑定数据之类的。

有个问题绕我纠结了很久,就是  bt.Command += new CommandEventHandler(bt_Command) 绑定了以后不能触发bt_Command,

我弄了很久才解决,头大!

不行了,喝了啤酒头晕,虽然不能很优雅的解决这个问题,但毕竟还是实现了嘛~

 

期待更好的解决办法!

转载于:https://www.cnblogs.com/SeraphWU/articles/1761105.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值