用数据控件datalist其中要显示的是产品信息包括:名称,普通价格,会员价格,VIP价格。而这3个价格根据不同的会员页面显示也不同的。VIP会员可以看到3种价格,高级会员可以看到2种价格,一般的只能看普通价格。
我的想法是
1:分别做3个页面,根据会员的级别连到相对应的页面去。但这样修改的话不方便
2:把3个价格放3个label中,根据会员级别隐藏label。隐藏的话不知道看html代码会不会仍然看的到不知道还有什么更好的办法,我用的是vs2005

解决方案 »

  1.   

    隐藏LABEL后页面上是看不到的。不过要用Visible=false,就是不让Label输入内容。
      

  2.   

    还有就是可以动态添加列,根据不同的会员权限,添加不同的列.如是vip则添加三列,普通会员则添加一列.这样就可以解决了.
      

  3.   

    //*****用一个页面显示就可以了//****写一个共公函数进行相应处理
    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;
    }
      

  4.   

    sql语句到是可以组合但是在页面里的帮定语句是固定的呀(或者小第不知道)
      

  5.   

    恩谢谢你的帮助我看了你的(zhangxiaopin(zxp))其实就是我说的第2中方法。 
    我现在就是想知道这个:
    sql组合我会,那么页面里的帮定语句怎么组(因为<%#DataBinder.Eval(Container.DataItem, "GoodsID")%>是写在页面不是后台里呀)。用gridview到是可以,而我用的是datalist或者repeater
      

  6.   

    根据会员的级别连到相对应的页面去...
    ----------------------------------------
    直接用会员的级别来过滤加载到数据控件datalist的数据,用数据视图或sql组合语句来做.
      

  7.   

    我在应用中使用的是第二种方法;
    动态生成HTML,这样就可以控制显示了;
      

  8.   

    //****你参考一下面这段代码,你在对你需要实现的效果进行相应处理就对了.
      <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>
      

  9.   

    cm8983(思远)兄你说的“过滤加载到数据控件datalist的数据,用数据视图或sql组合语句来做.”也就是sql语句组合这个我知道,问题是在datalist或者repeater里面绑数据是根据
    <%#DataBinder.Eval(Container.DataItem, "GoodsID")%>来的,而这个是预先写好在页面里的了,sql一变那么绑定的代码要也要变,这里就是我不知道的了
      

  10.   

    //****你先将三种价格邦定到datalist,repeater的模版中
     <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事件获取邦定三个价格的标筌,在根据会员状态进行处理.
      

  11.   

    可能大家还是没理解我现在要知道的是sql动态组合后前太的绑定语句列如:                 <%#DataBinder.Eval(Container.DataItem, "GoodsID")%>这个要怎么动态组合。如果是vip会员那么sql语句就是select GoodsName,NPrice,MPrice,VipPrice from Goods
    前台绑定语句<%#DataBinder.Eval(Container.DataItem, "GoodsID")%>就有4个。。
    如果是普通会员那么sql语句就是select GoodsName,NPrice from Goods
    前台绑定语句<%#DataBinder.Eval(Container.DataItem, "GoodsID")%>就有2个。。这个要怎么实现呢??
      

  12.   

    //****还有一种就是在前控制
    <%if(loginusertype==1){%>
    <%
       ...
    %>
    <%}elseif(loginusertype==2{%><%}else{%>
        .....
    <%}%>
      

  13.   

    给DataList绑定一个SqlDataSource,<%#DataBinder.Eval(Container.DataItem, "GoodsID")%>中的GoodsID就是SqlDataSource的SelectCommand的SQL语句字段。
    当然也可以手动绑定不用SqlDataSource。
      

  14.   

    第二种方式是可行的,也可以删除DataGrid的列。如果不是什么要求特别高的项目,生成不同的SQL语句是没什么意义的。
      

  15.   

    如果是vip会员那么sql语句就是select GoodsName,NPrice,MPrice,VipPrice from Goods
    ==============================================================================
    其他的确sql语句就是select GoodsName,NPrice,'','' from Goods
    或select GoodsName,NPrice,'VIP价格','...价格' from Goods
    这样你代码就不用改动了.
      

  16.   

    select GoodsName,NPrice,'VIP价格','...价格' from Goods
    这样还可以刺激用户一下,想知道'VIP价格'先成为vip会员.呵呵.