多表或者是连表查询, 数据控件搞不定,或者某个页面布局很难在模板里实现时该怎么办?
如下:
venshop_hw 商品表hw_id     int  商品ID (主键   自动增长)
sort_id   int 大类ID
nsort_id  int 小类ID
hw_kucun  int 商品库存
hw_sn     varchar 商品编号(如:P20091228..)
......venshop_p  礼包表p_id     int 礼包ID (主键   自动增长)
p_name   varchar 礼包名称
p_price  decimal 礼包价格
p_pro    varchar (礼包是由很多单个的商品组成的, p_pro里存的是单个商品的ID 格式如下 : /231/232/233/)
购物车页面格式如下:商品编号     名称             单价  数量          合计        类型(颜色 尺寸)                      操作
52           V领富丽礼包      200   1(文本框)   299         设置(点击设置  可折叠下面部分)       取消
                                                              礼包中包含产品     尺寸       颜色
                                                              V领富丽条纹1      (下拉框)   (下拉框)
                                                              V领富丽条纹2      (下拉框)   (下拉框)
                                                              。。
231         POLO衫            99   2              198         M    红色                             更改 取消 
数据控件能搞定这样的格式吗?  我使用循环打印的,虽然格式可以实现,但是点更改(修改) 每次都无法更改,取不到下拉框里的值,像类似的这种 数据控件搞不定,用循环能打印出格式却不能 修改数据的情况还比较多 ,有没有两全其美的方法   

解决方案 »

  1.   

    数据控件能搞定这样的格式吗?  
    ==============================
    使用table 嵌套Repeater的方法+css控制好样式HasMorePages   调用PrintPage   事件   
      PrintPage   事件逻辑分3部分   
      1、每页固定部分   
      2、每页变化部分   
      3、换页的逻辑
    ======================================
    无法更改,取不到下拉框里的值这是你的程序问题吧??
       
      

  2.   

    你用什么控件,DataList吗?把你的修改功能的代码贴出来看看。
      

  3.   


    控件挺好布局的,只要你css写的合适。多表也可以绑定到控件上。把你所说的无法更新部分的源代码贴出来让大家看看,肯定有解决的办法。
      

  4.   

    Buy.aspx (购物车页面代码)
        if (Request["basket_id"] != null && Request["basket_id"] != "")
                           {
                              int basket_id = Convert.ToInt32(Request["basket_id"].ToString());
                               try
                               {
                                   if (Request["action"] != null && Request["action"] == "delete")
                                   {                        
                                       
                                       bool isDelete= basketBLL .IsDeleteBasket (basket_id);
                                       if(isDelete)
                                       Response.Redirect("Buy.aspx");
                                       else
                                           Response .Write ("删除失败!");
                                   }
                                   //if (Request["action"] != null && Request["action"] == "update")
                                   //{
                                   //    string size = ddlChiCun.SelectedValue;
                                   //    string color = ddlColor.SelectedValue;
                                   //    int count = Convert.ToInt16(ddlCount.SelectedValue);
                                   //    string updateHwSql = string.Format("update venshop_basket set basket_count={0},kxa='{1}',kxb='{2}' where hw_id={3}", count, size, color, hw_id);
                                   //    Help.ExecuteSql(Help.ConnectionDataBase, updateHwSql);
                                   //}
                               }
                               catch (Exception on)
                               {
                                   throw on;
                               }
                           }                 
    全部都卸载了aspx页面里
      

  5.   

    Buy.aspx (购物车页面代码)
        if (Request["basket_id"] != null && Request["basket_id"] != "")
                           {
                              int basket_id = Convert.ToInt32(Request["basket_id"].ToString());
                               try
                               {
                                   if (Request["action"] != null && Request["action"] == "delete")
                                   {                        
                                       
                                       bool isDelete= basketBLL .IsDeleteBasket (basket_id);
                                       if(isDelete)
                                       Response.Redirect("Buy.aspx");
                                       else
                                           Response .Write ("删除失败!");
                                   }
                                   //if (Request["action"] != null && Request["action"] == "update")
                                   //{
                                   //    string size = ddlChiCun.SelectedValue;
                                   //    string color = ddlColor.SelectedValue;
                                   //    int count = Convert.ToInt16(ddlCount.SelectedValue);
                                   //    string updateHwSql = string.Format("update venshop_basket set basket_count={0},kxa='{1}',kxb='{2}' where hw_id={3}", count, size, color, hw_id);
                                   //    Help.ExecuteSql(Help.ConnectionDataBase, updateHwSql);
                                   //}
                               }
                               catch (Exception on)
                               {
                                   throw on;
                               }
                           }                 
    全部都卸载了aspx页面里
      

  6.   

    顶一下
    我的修改  删除用的都是超链接<td align="center" class="cartshow" style="height: 11px">
    <% if (IBasket[i].IsP == 0) { %>    
     <a href="buy.aspx?action=update&basket_id=<%=IBasket[i].BasketID%>">修改</a>
    <% } %>
    <a href="Buy.aspx?action=delete&basket_id=<%=IBasket[i].BasketID%>">删除 </a>                                      
    </td>用的就是所谓asp式的 .NET ,但是每次点修改后 页面一刷新无法取的当前的值,无法保存状态
      

  7.   

    链接过去的页面无法保存前一页面的值。        <asp:LinkButton ID="LinkButton1" runat="server" OnClick="LinkButton1_Click" CommandArgument="edit">修改</asp:LinkButton>
            <asp:LinkButton ID="LinkButton2" runat="server" OnClick="LinkButton1_Click" CommandArgument="del">删除</asp:LinkButton>    protected void LinkButton1_Click(object sender, EventArgs e)
        {
            string type = ((LinkButton)sender).CommandArgument;
            if(type=="del")
            {            bool isDelete = basketBLL.IsDeleteBasket(basket_id);
                if (isDelete)
                    Response.Redirect("Buy.aspx");
                else
                    Response.Write("删除失败!");
            }
            if (type== "edit")
            {
                string size = ddlChiCun.SelectedValue;
                string color = ddlColor.SelectedValue;
                int count = Convert.ToInt16(ddlCount.SelectedValue);
                string updateHwSql = string.Format("update venshop_basket set basket_count={0},kxa='{1}',kxb='{2}' where hw_id={3}", count, size, color, hw_id);
                Help.ExecuteSql(Help.ConnectionDataBase, updateHwSql);
            }
        }
      

  8.   

    用按钮  无法取得basket_id 
      

  9.   

    不行,那就用一个ViewState["ID"]来存当前的操作值
    多表,可以用视图连接查询
      

  10.   


    购物车里可能有礼包 和 其他商品,礼包是由单个的商品组合起来的,礼包需要循环,并显示出来,一条SQL语句怕是搞不定
    p_id     int 礼包ID (主键   自动增长)
    p_name   varchar 礼包名称
    p_price  decimal 礼包价格
    p_pro    varchar (礼包是由很多单个的商品组成的, p_pro里存的是单个商品的ID 格式如下 : /231/232/233/)
      

  11.   

    datalist嵌套datalist就可以了
    别想太复杂了,一个sql搞不定,可以用多个嘛,多个都搞不定
    可以自己创建datatable组合成需要的数据源
      

  12.   


    +1,创建datatable。然后用GridView或者Datalist表示出来。
      

  13.   

    页面上的数据从venshop_basket( 购物车表)里取的
    venshop_basketbasket_id  int  (主键 自动增长)
    hw_id      int 商品ID
    hw_sn      varchar  商品编号 如:P20091229
    user_name  varchar  用户姓名
    sub_number varchar  订单号
    hw_name    varchar  商品名称
    isp         int 是否是礼包 (0 非礼包    1礼包) 
    。。显示数据的时候需要判断购物车里的物品是否是礼包,如果是礼包,得把礼包里的商品详细的显示出来,数据控件显示的时候如何判断是不是礼包了?
      

  14.   

    你的basket_id 在哪里存放着?
      

  15.   

    不行,那就用一个ViewState["ID"]来存当前的操作值 
    多表,可以用视图连接查询
      

  16.   


    venshop_basket(购物车表) 表的主键,每往购物车里增加一条记录,basket_id 就自增1
      

  17.   

    用循环打印出来,如果是修改按钮  取不到basket_id, 如果修改采用超链接,类似像asp的方式处理,页面一回传 下拉框里不能保存所取的值的状态,<% if (IBasket[i].IsP == 0) { %>    
     <a href="buy.aspx?action=update&basket_id=<%=IBasket[i].BasketID%>">修改</a>
    <% } %>
    <a href="Buy.aspx?action=delete&basket_id=<%=IBasket[i].BasketID%>">删除 </a>   //if (Request["action"] != null && Request["action"] == "update")
                                   //{
                                   //    string size = ddlChiCun.SelectedValue;
                                   //    string color = ddlColor.SelectedValue;
                                   //    int count = Convert.ToInt16(ddlCount.SelectedValue);
                                   //    string updateHwSql = string.Format("update venshop_basket set basket_count={0},kxa='{1}',kxb='{2}' where hw_id={3}", count, size, color, hw_id);
                                   //    Help.ExecuteSql(Help.ConnectionDataBase, updateHwSql);
                                   //}
    ,如果用数据控件  要判断是礼包还是普通商品,如果是礼包 就要把礼包中所包含的普通商品给罗列出来,格式 如下:
    商品编号     名称             单价  数量          合计        类型(颜色 尺寸)                      操作
    52           V领富丽礼包      200   1(文本框)   299         设置(点击设置  可折叠下面部分)       取消
                                                                  礼包中包含产品     尺寸       颜色
                                                                  V领富丽条纹1      (下拉框)   (下拉框)
                                                                  V领富丽条纹2      (下拉框)   (下拉框)
                                                                  。。
    231         POLO衫            99   2              198         M    红色                             更改 取消 
    数据控件绑定的时候如何判断?  
    有没有两全其美的办法 
      

  18.   

    顶一下 
    各位有谁遇到类似的问题,如果是在MVC中 应该就可以解决了 
      

  19.   

    在顶一下 ,一条SQL语句能否查出购物车中的所有商品(包括礼包中商品的详细信息)
      

  20.   

    我的方法就是在外边套一个div 做个横滚动条
    或者gridview隐藏列,每次我点编辑时,不需要修改的列就隐藏掉,不过主义隐藏后,列的index就变了
      

  21.   

    我的网站www.942book.com 你去 “我要找书”页去搜一本书,看看我怎么做的就可以进行分类了
    我用的是detail嵌套下拉列表
      

  22.   

    我要判断购物车里的商品是礼包还是普通商品,是礼包就用折叠的方式显示它所包含商品的详细信息,如果是非礼包就只显示商品信息 ,如何在SQL语句中进行判断,存储过程?
      

  23.   

    首先你要判断的是 购物车里的东西,而不是数据库里的东西,比如你有一个列表
    每一行里都有一个 可以展开的控件,暂时不展开(比较好)你点击某一行的控件,总能取到该行的 key吧?然后把这个key传到数据库里的存储过程,做判断,也就是说当你点击 子控件想展开时才去做判断,然后把数据显示到子列表里,
      

  24.   

    判断是否是礼包  连接到相关的页面  如何判断
    isp (0 是礼包  1不是礼包)
     if(Eval("isp")=="1")  
      <a href='<%# string.Format("../views.aspx?hw_id={0}",Eval("hw_id")) %>' target="_blank"><%#Eval("hw_name")%></a>
     <% }else{%>
      <a href='<%# string.Format("../Page.aspx?p_id={0}",Eval("hw_id")) %>' >
          <%#Eval("hw_name")%>
    </a>
                <% } %>这样报错  
      

  25.   

    如何从你设计应用的角度来说,p_pro字段应该分开设计更合理点:
    增加一个表:
    礼包商品对应表:
    p_id
    hw_id
      

  26.   

    表设计的的确有些问题,现在改 变动有些大  这个:
    判断是否是礼包  连接到相关的页面  如何判断 
    isp (0 是礼包  1不是礼包) C# code
     if(Eval("isp")=="1")  
      <a href='<%# string.Format("../views.aspx?hw_id={0}",Eval("hw_id")) %>' target="_blank"><%#Eval("hw_name")%></a>
     <% }else{%>
      <a href='<%# string.Format("../Page.aspx?p_id={0}",Eval("hw_id")) %>' >
          <%#Eval("hw_name")%>
    </a>
                <% } %>
    这样报错  大家看看   
      

  27.   


    判断是否是礼包  连接到相关的页面  如何判断 
    isp (0 是礼包  1不是礼包) C# code
     if(Eval("isp")=="1")  
      <a href='<%# string.Format("../views.aspx?hw_id={0}",Eval("hw_id")) %>' target="_blank"><%#Eval("hw_name")%></a>
     <% }else{%>
      <a href='<%# string.Format("../Page.aspx?p_id={0}",Eval("hw_id")) %>' >
          <%#Eval("hw_name")%>
    </a>
                <% } %>
    这个如何判断?
      

  28.   

    自己先用table做好表格格式,然后放到模板里,并绑定好数据就行了
    数据控件是可以套的
      

  29.   

    关于在数据控件中判断 已经解决了 
    http://topic.csdn.net/u/20100105/17/4d01d690-14b3-4337-a3d2-f80a623679bb.html但是发现还有另外一个问题:
    venshop_p( 礼包表)显示礼包中的物品  
    p_id     int 礼包ID (主键   自动增长)
    p_name   varchar 礼包名称
    p_price  decimal 礼包价格
    p_pro    varchar (礼包是由很多单个的商品组成的, p_pro里存的是单个商品的ID 格式如下 : /231/232/233/)
    venshop_basket(购物车表)
    basket_id  int (主键   自动增长)
    hw_id      int
    kxa        varchar 衣服尺寸  如果是礼包 该列值格式如下   /39/L/
    kxb        varchar 衣服颜色  如果是礼包 该列值格式如下:/白色/粉红/
    表设计有缺陷,导致现在用数据控件绑定也比较麻烦 ,衰。如果该表结构  代码改动又比较大,不改的话 这个购物车又无法实现。怎么办?
      

  30.   

    取值的问题  在后台记得绑定时  记得加上!ispostboack
      

  31.   

    界面可以通过CSS来搞定
    联表查询可以通过 内联接查询select a.列1,a.列2,b,列3 from 礼包表 a inner join 商品表 b on charindex('/'+b.hwid+'/','/'+a.p_pro+'/')>0
      

  32.   

    把数据取出来,根据要求建个临时表,然后绑repeater只要是列表没有搞不定的
      

  33.   

    用Repeater或者DataList 控件 显示数据,用 视图作为数据源绑定到数据控件 ,加CSS 控制就可以了