用数据控件datalist其中要显示的是产品信息包括:名称,普通价格,会员价格,VIP价格。而这3个价格根据不同的会员页面显示也不同的。VIP会员可以看到3种价格,高级会员可以看到2种价格,一般的只能看普通价格。
我的想法是
1:分别做3个页面,根据会员的级别连到相对应的页面去。但这样修改的话不方便
2:把3个价格放3个label中,根据会员级别隐藏label。隐藏的话不知道看html代码会不会仍然看的到不知道还有什么更好的办法,我用的是vs2005
我的想法是
1:分别做3个页面,根据会员的级别连到相对应的页面去。但这样修改的话不方便
2:把3个价格放3个label中,根据会员级别隐藏label。隐藏的话不知道看html代码会不会仍然看的到不知道还有什么更好的办法,我用的是vs2005
解决方案 »
- 求c#表单验证类或表单验证策略
- datagrid单元格里的内容随着表格大小而改变
- 如何将Excel数据导入数据库?急!!
- 请问网上银行支付服务的接口问题
- sql 语句遇到困难,大牛来帮忙看看,在线等
- 我的。NET网站用动网的论坛,怎么进行用户登录的交互呀。。
- 请问高手:在ASP.Net里,在Javascript里能不能调用Web页面里的控件的值呢?怎样调用呢?
- 在asp.net中如何获得 存储过程的返回值???
- 巨难的问题,如果将网页用图片形式保存起来,
- 我的asp.net困惑,大家帮我看啊~谢谢
- 想做一个网上的QQ即时的点对点发送短信的 请大家指点
- 关于SqlDataAdapter.update的问题!
public static void LoginUserType(int UserType)
{
switch(UserTeyp)
{
case 1: //***VIP会员
ConsoleDispalyMoney(true,true,true);break;
case 2://***高级会员
ConsoleDispalyMoney(false,true,false);break;
case 3://***普通会员
ConsoleDispalyMoney(false,false,true);break;
}
}//****控制显示价格函数
private void ConsoleDispalyMoney(bool IsVip,bool IsGJ,bool IsMember)
{
lblvip.visible=Isvip;
lblgj.visible=isgj;
lblmember.visible=ismember;
}
我现在就是想知道这个:
sql组合我会,那么页面里的帮定语句怎么组(因为<%#DataBinder.Eval(Container.DataItem, "GoodsID")%>是写在页面不是后台里呀)。用gridview到是可以,而我用的是datalist或者repeater
----------------------------------------
直接用会员的级别来过滤加载到数据控件datalist的数据,用数据视图或sql组合语句来做.
动态生成HTML,这样就可以控制显示了;
<asp:Repeater ID="RepList" runat="server">
<ItemTemplate>
<table border="0" cellpadding="0" cellspacing="0">
<tr>
<td>
企业名称:</td>
<td>
<%#DataBinder.Eval(Container.DataItem,"CopationName")%>
</td>
</tr>
<tr>
<td colspan="2">
<asp:Repeater ID="ChileReption" runat="server" DataSource='<%#((DataRowView)Container.DataItem).Row.GetChildRows("myparent")%>'>
<ItemTemplate>
<table border="0" cellpadding="0" cellspacing="0">
<tr>
<td>
产口名称:</td>
<td>
<%#DataBinder.Eval(Container.DataItem,"[\"ProductName\"]")%>
</td>
<td>
单价:</td>
<td>
<%#DataBinder.Eval(Container.DataItem,"[\"Proice\"]","{0:c}")%>
</td>
</tr>
</table>
</ItemTemplate>
</asp:Repeater>
</td>
</tr>
</table>
</ItemTemplate>
</asp:Repeater>
<%#DataBinder.Eval(Container.DataItem, "GoodsID")%>来的,而这个是预先写好在页面里的了,sql一变那么绑定的代码要也要变,这里就是我不知道的了
<asp:Repeater ID="repList" runat="server">
<ItemTemplate>
<table border="0" cellpadding="0" cellspacing="0">
<tr>
<td>
价格信息:</td>
<td>
VIP价格:<asp:Label ID="lblVIP" runat="server" Text='<%#DataBinder.Eval(Container.DataItem,"VIP","{0:C}")%>'></asp:Label><br />
高级会员价格:<asp:Label ID="lblGJ" runat="server" Text='<%#DataBinder.Eval(Container.DataItem,"GJ","{0:c}")%>'></asp:Label>
普通会员价格:<asp:Label ID="lblMember" runat="server" Text='<%#DataBinder.Eval(Container.DataItem,"Member","{0:c}")%>'></asp:Label>
</td>
</tr>
</table>
</ItemTemplate>
</asp:Repeater>//****在后台itemdatabound事件获取邦定三个价格的标筌,在根据会员状态进行处理.
前台绑定语句<%#DataBinder.Eval(Container.DataItem, "GoodsID")%>就有4个。。
如果是普通会员那么sql语句就是select GoodsName,NPrice from Goods
前台绑定语句<%#DataBinder.Eval(Container.DataItem, "GoodsID")%>就有2个。。这个要怎么实现呢??
<%if(loginusertype==1){%>
<%
...
%>
<%}elseif(loginusertype==2{%><%}else{%>
.....
<%}%>
当然也可以手动绑定不用SqlDataSource。
==============================================================================
其他的确sql语句就是select GoodsName,NPrice,'','' from Goods
或select GoodsName,NPrice,'VIP价格','...价格' from Goods
这样你代码就不用改动了.
这样还可以刺激用户一下,想知道'VIP价格'先成为vip会员.呵呵.