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

 

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

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);
}
}