Hishop数据库根据产品ProductID取产品规格


#region 产品规格
public static string GetSku(int ProductId)
{
DataTable skus =GetSkus(ProductId);
// Response.Write("skus.Rows.Count=" + skus.Rows.Count);
StringBuilder builder = new StringBuilder();
if ((skus != null) && (skus.Rows.Count > 0))
{
builder.AppendFormat("<input type=\"hidden\" id=\"hiddenSkuId\" value=\"{0}_0\" />", ProductId).AppendLine();
IList<string> list = new List<string>();
builder.AppendFormat("<input type=\"hidden\" id=\"hiddenProductId\" value=\"{0}\" />", ProductId).AppendLine();
builder.AppendLine("<div class=\"specification\">");
foreach (DataRow row in skus.Rows)
{
if (!list.Contains((string)row["AttributeName"]))
{
list.Add((string)row["AttributeName"]);
builder.AppendFormat("<div class=\"title text-muted\">{0}:</div><input type=\"hidden\" name=\"skuCountname\" AttributeName=\"{0}\" id=\"skuContent_{1}\" />", row["AttributeName"], row["AttributeId"]);
builder.AppendFormat("<div class=\"list clearfix\" id=\"skuRow_{0}\">", row["AttributeId"]);
//再定义一个list,再循环一次,第一次的AttributeName值和第一次的AttributeName比较,列出相等的,再判断第二次的是否包含ValueStr的值
//不包含就列出第一次的AttributeName对应的ValueStr的值
IList<string> list2 = new List<string>();
foreach (DataRow row2 in skus.Rows)
{
if ((string.Compare((string)row["AttributeName"], (string)row2["AttributeName"]) == 0) && !list2.Contains((string)row2["ValueStr"]))
{
string str = string.Concat(new object[] { "skuValueId_", row["AttributeId"], "_", row2["ValueId"] });
list2.Add((string)row2["ValueStr"]);
builder.AppendFormat("<div class=\"SKUValueClass\" id=\"{0}\" AttributeId=\"{1}\" onClick=\"SelectSkus(this)\" ValueId=\"{2}\">{3}</div>", new object[] { str, row["AttributeId"], row2["ValueId"], (row2["ImageUrl"].ToString() != "") ? ("<img src='" + row2["ImageUrl"] + "' width='50px' height='35px'></img>") : row2["ValueStr"] });
}
}
builder.AppendLine("</div>");
}
}
builder.AppendLine("</div>");
return (builder.ToString());
}
else
{
return "";
}
}
#endregion
public DataTable GetSkus(int productId)
{
DbCommand sqlStringCommand = this.database.GetSqlStringCommand("SELECT SkuId, a.AttributeId, AttributeName, UseAttributeImage, av.ValueId, ValueStr, ImageUrl FROM Hishop_SKUItems s join Hishop_Attributes a on s.AttributeId = a.AttributeId join Hishop_AttributeValues av on s.ValueId = av.ValueId WHERE SkuId IN (SELECT SkuId FROM Hishop_SKUs WHERE ProductId = @ProductId) ORDER BY a.DisplaySequence DESC,av.DisplaySequence DESC");
this.database.AddInParameter(sqlStringCommand, "ProductId", DbType.Int32, productId);
using (IDataReader reader = this.database.ExecuteReader(sqlStringCommand))
{
return DataHelper.ConverDataReaderToDataTable(reader);
}
}
Hishop数据库根据产品ProductID取产品规格的更多相关文章
- 【ASP.NET基础】简单企业产品展示网站--产品编辑CRUD
摘要:本文记录创建一个小的.简单的产品网站的步骤. 一,搭建一个简单的产品展示网站,熟悉以下知识点:NVelocity模板引擎.Ajax无刷新页面请求,文件上传,Row_Number实现分页,ckEd ...
- 资讯类产品-创业邦APP产品原型模板公开分享
众所周知,知识付费和资讯是近年来两个受关注度极高的互联网产品方向.18年喜马拉雅“123狂欢节”,3天时间内容消费额4.35亿,足见知识付费内容市场的火爆.字节跳动凭借今日头条APP起家,逐渐跻身互联 ...
- [Oracle]数据库的Control File 取Dump后的样例
[Oracle]数据库的Control File 取Dump后的样例: 片段截取-------------------------------(size = 40, compat size = 40, ...
- 产品相关 做产品VS做项目
做产品VS做项目 by:授客 QQ:1033553122 相关定义 根据GB/T19000—2008<质量管理体系基础和术语>,有以下定义 过程process 一组将输入转化为输出的相互关 ...
- 一个老IT产品管理者对于产品经理工作的经验总结
一个老IT产品管理者对于产品经理工作的经验总结 1. 任何行业,包括IT行业,所谓产品管理.产品经理,其核心应该是企业产品管理制度,也就是说,只有企业存在相应的.合理的产品管理体系和制度,产品管理.产 ...
- 产品 | What's产品经理
如果想知道什么是产品,首先需要知道什么是缔造者.其名曰:"产品经理". PS:产品经理一词在国内大多时候泛指"互联网产品经理". 对于产品经理这一职位,说实在很 ...
- 云原生数据库 TDSQL-C 产品概述、产品优势、应用场景
云原生数据库 TDSQL-C(Cloud Native Database TDSQL-C,TDSQL-C)是腾讯云自研的新一代高性能高可用的企业级分布式云数据库.融合了传统数据库.云计算与新硬件技术的 ...
- 关于各种数据库 Insert时同时取到Id的操作
对数据库的操作,在Insert的同时获取到Id,保证原子性操作.而不是,先取Id,然后再插入到数据库等操作. Oracle: 使用Oracle自带的 Returning into 语句,具体代码示例如 ...
- 产品经理聊产品--mac book pro 2018 初体验
工作前几年,使用电脑,基本上都是微软的操作系统,自从从大厂出来之后,才逐渐熟悉使用linux,到现在基本上都是基本上一个月windows平台基本不需要开机就可以,可以说基本上被ubuntu的简洁和实用 ...
随机推荐
- 【学习】Python进行数据提取的方法总结【转载】
链接:http://www.jb51.net/article/90946.htm 数据提取是分析师日常工作中经常遇到的需求.如某个用户的贷款金额,某个月或季度的利息总收入,某个特定时间段的贷款金额和笔 ...
- V先生:信息流广告标题党必备的500个热词
稍微没有全都偏,简直仅仅只永远, 已经曾经就竟然,将要立刻刚偶然, 渐渐终于决忽然,难道连续又再三, 也许必须很非常,最太十分更马上, 越极总挺常常再,屡次一定也不还. 你一定不知道.如何.最.咋.是 ...
- 分布式 基本理论 CAP
谈及分布式,必然谈到 CAP, CAP 已经是被说烂了的一个 话题, 绕不开, 逃不掉. 而且, 理解起来 会有些吃力. 分布式的CAP理论告诉我们 “任何一个分布式系统都无法同时满足 一致性(Co ...
- 关于vue
render:(h)=>h(App):声明App组件的内容 挂载到节点 const root=document.createElement("div")document.bo ...
- bootstrap-datetimepicker 时间配置,包含颜色
if ($('.isdatetimepicker')!=undefined&&$('.isdatetimepicker').datetimepicker!=undefined) { / ...
- 关于python的一些想法
我来自信息管理与信息系统专业,大一学过c语言但不太精通.学习python是为了学会这门新语言,据了解python会慢慢成为主流编程语言. 因为对绘图方面很感兴趣,希望老师能够在课上多讲一些这方面的东西 ...
- Django return
return HttpResponse("OK") 返回一个字符串 return redirect("/index/") 返回URL return render ...
- [转]再识Cortex-M3之堆栈
原地址https://blog.csdn.net/liaoxu02/article/details/48107651 Cortex-M3拥有通用寄存器R0-R15以及一些特殊功能寄存器.R0-R12是 ...
- if __name__ == 'main': 的作用和原理
if __name__ == 'main': 功能 一个python的文件有两种使用的方法,第一是直接作为脚本执行,第二是import到其他的python脚本中被调用(模块重用)执行. if __na ...
- autolayout原理
Autolayout Engine根据视图间的约束关系得到一个线性方程组,求这个线性方程组的解即得到每个视图的位置信息.(x,y,width,height) 参考: https://www.jians ...