多表或者是连表查询, 数据控件搞不定,或者某个页面布局很难在模板里实现时该怎么办?
如下:
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 红色 更改 取消
数据控件能搞定这样的格式吗? 我使用循环打印的,虽然格式可以实现,但是点更改(修改) 每次都无法更改,取不到下拉框里的值,像类似的这种 数据控件搞不定,用循环能打印出格式却不能 修改数据的情况还比较多 ,有没有两全其美的方法
如下:
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 红色 更改 取消
数据控件能搞定这样的格式吗? 我使用循环打印的,虽然格式可以实现,但是点更改(修改) 每次都无法更改,取不到下拉框里的值,像类似的这种 数据控件搞不定,用循环能打印出格式却不能 修改数据的情况还比较多 ,有没有两全其美的方法
==============================
使用table 嵌套Repeater的方法+css控制好样式HasMorePages 调用PrintPage 事件
PrintPage 事件逻辑分3部分
1、每页固定部分
2、每页变化部分
3、换页的逻辑
======================================
无法更改,取不到下拉框里的值这是你的程序问题吧??
控件挺好布局的,只要你css写的合适。多表也可以绑定到控件上。把你所说的无法更新部分的源代码贴出来让大家看看,肯定有解决的办法。
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页面里
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页面里
我的修改 删除用的都是超链接<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 ,但是每次点修改后 页面一刷新无法取的当前的值,无法保存状态
<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);
}
}
多表,可以用视图连接查询
购物车里可能有礼包 和 其他商品,礼包是由单个的商品组合起来的,礼包需要循环,并显示出来,一条SQL语句怕是搞不定
p_id int 礼包ID (主键 自动增长)
p_name varchar 礼包名称
p_price decimal 礼包价格
p_pro varchar (礼包是由很多单个的商品组成的, p_pro里存的是单个商品的ID 格式如下 : /231/232/233/)
别想太复杂了,一个sql搞不定,可以用多个嘛,多个都搞不定
可以自己创建datatable组合成需要的数据源
+1,创建datatable。然后用GridView或者Datalist表示出来。
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礼包)
。。显示数据的时候需要判断购物车里的物品是否是礼包,如果是礼包,得把礼包里的商品详细的显示出来,数据控件显示的时候如何判断是不是礼包了?
多表,可以用视图连接查询
venshop_basket(购物车表) 表的主键,每往购物车里增加一条记录,basket_id 就自增1
<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 红色 更改 取消
数据控件绑定的时候如何判断?
有没有两全其美的办法
各位有谁遇到类似的问题,如果是在MVC中 应该就可以解决了
或者gridview隐藏列,每次我点编辑时,不需要修改的列就隐藏掉,不过主义隐藏后,列的index就变了
我用的是detail嵌套下拉列表
每一行里都有一个 可以展开的控件,暂时不展开(比较好)你点击某一行的控件,总能取到该行的 key吧?然后把这个key传到数据库里的存储过程,做判断,也就是说当你点击 子控件想展开时才去做判断,然后把数据显示到子列表里,
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>
<% } %>这样报错
增加一个表:
礼包商品对应表:
p_id
hw_id
判断是否是礼包 连接到相关的页面 如何判断
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>
<% } %>
这样报错 大家看看
判断是否是礼包 连接到相关的页面 如何判断
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>
<% } %>
这个如何判断?
数据控件是可以套的
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 衣服颜色 如果是礼包 该列值格式如下:/白色/粉红/
表设计有缺陷,导致现在用数据控件绑定也比较麻烦 ,衰。如果该表结构 代码改动又比较大,不改的话 这个购物车又无法实现。怎么办?
联表查询可以通过 内联接查询select a.列1,a.列2,b,列3 from 礼包表 a inner join 商品表 b on charindex('/'+b.hwid+'/','/'+a.p_pro+'/')>0