用一字段存储图片信息和文字信息的处理
来源:互联网 发布:天猫魔盒设置网络 编辑:程序博客网 时间:2024/04/28 04:07
前几天做个公司的宣传网站,学习了前辈们的经验把数据库设计成这样:
商品:
(access数据库)
一基本表:
商品共有的属性及值;
一扩展属性名称表(也可以理解为属性名称表):
含ID和名称两字段;
一扩展属性表:
ID/属性ID/产品ID/属性值.
属性值勤中有存图片和文字类的信息.
图片只存文件名.
但取出时要输出 <img> 把图片显示出来;
而一般文字不需要这样处理.
所以要在取出时先判断,再分别处理.
这个问题我已经自己写了一个控件作了处理.
我把代码贴出来,大家交流一下,也希望能有更好的方法处理这类问题.
using System;
using System.Data;
using System.Web.UI;
using System.ComponentModel;
using Model;
using BLL;
namespace WareImgOutput
...{
/**//// <summary>
/// WaresImg 的摘要说明 输出商品的简要信息,包括一张缩略图
/// </summary>
[DefaultProperty("SelectedId")]
[ToolboxData("<{0}:RenderControl runat=server></{0}:RenderControl>")]
public class WaresImg : Control
...{
public WaresImg()
...{
//
// TODO: 在此处添加构造函数逻辑
//
}
// 实现 SelectedId
[Bindable(true)]
[Category("Appearance")]
[DefaultValue("")]
[Localizable(true)]
public string SelectedId
...{
get
...{
String s = (String)ViewState["SelectedId"];
return ((s == null) ? String.Empty : s);
}
set
...{
ViewState["SelectedId"] = value;
}
}
// 重写Render方法
protected override void Render(HtmlTextWriter writer)
...{
DataTable dt = null;
if (SelectedId != null && SelectedId != "")
...{
int _id = Convert.ToInt32(SelectedId);
dt = PropertyManager.Instance().GetAllPropertyByID(_id);
if (dt != null && dt.Rows.Count > 0)
...{
foreach (DataRow dr in dt.Rows)
...{
//只输出缩略图片
if (dr["ex_propertyName"].ToString() == "图片")
...{
writer.AddAttribute("src", "images/" + "s_" + Uri.UnescapeDataString(dr["property_value"].ToString()));
writer.AddAttribute("alt", Uri.UnescapeDataString(dr["ware_name"].ToString()));
writer.RenderBeginTag(HtmlTextWriterTag.Img);
writer.RenderEndTag();
break;//只输出一张图片
}
}
}
else
...{
writer.Write("商品没有属性.");
}
}
else
...{
writer.Write("没有选择商品.");
}
}
}
}
using System.Data;
using System.Web.UI;
using System.ComponentModel;
using Model;
using BLL;
namespace WareImgOutput
...{
/**//// <summary>
/// WaresImg 的摘要说明 输出商品的简要信息,包括一张缩略图
/// </summary>
[DefaultProperty("SelectedId")]
[ToolboxData("<{0}:RenderControl runat=server></{0}:RenderControl>")]
public class WaresImg : Control
...{
public WaresImg()
...{
//
// TODO: 在此处添加构造函数逻辑
//
}
// 实现 SelectedId
[Bindable(true)]
[Category("Appearance")]
[DefaultValue("")]
[Localizable(true)]
public string SelectedId
...{
get
...{
String s = (String)ViewState["SelectedId"];
return ((s == null) ? String.Empty : s);
}
set
...{
ViewState["SelectedId"] = value;
}
}
// 重写Render方法
protected override void Render(HtmlTextWriter writer)
...{
DataTable dt = null;
if (SelectedId != null && SelectedId != "")
...{
int _id = Convert.ToInt32(SelectedId);
dt = PropertyManager.Instance().GetAllPropertyByID(_id);
if (dt != null && dt.Rows.Count > 0)
...{
foreach (DataRow dr in dt.Rows)
...{
//只输出缩略图片
if (dr["ex_propertyName"].ToString() == "图片")
...{
writer.AddAttribute("src", "images/" + "s_" + Uri.UnescapeDataString(dr["property_value"].ToString()));
writer.AddAttribute("alt", Uri.UnescapeDataString(dr["ware_name"].ToString()));
writer.RenderBeginTag(HtmlTextWriterTag.Img);
writer.RenderEndTag();
break;//只输出一张图片
}
}
}
else
...{
writer.Write("商品没有属性.");
}
}
else
...{
writer.Write("没有选择商品.");
}
}
}
}
这样做,目的是让管理者可以无限制的添加商品的属性,包括多张图片.
但有一个不好的就是损失了性能.
- 用一字段存储图片信息和文字信息的处理
- 【计算机系统学习-信息表示和处理】【一、信息的存储】
- 信息的存储和表示
- [CSAPP] 信息的表示和处理(一)
- 存储信息和输出信息
- 信息的表示和处理
- 信息的表示和处理
- 信息的表示和处理
- 信息的表示和处理
- 信息的表示和处理
- 信息的表示和处理
- 信息的表示和处理
- MySQL字段的说明和备注信息
- MySQL 字段的说明和备注信息
- editText里面图和文字混排并编辑以后存里面的文字和图片信息等
- C# WebRequest同时Post提交图片和字段信息
- 用C#读取图片的EXIF信息的方法(一)
- 用C#读取图片的EXIF信息的方法(一)
- 数字变成大写的类,把人民币转化为大写汉字
- Art Lebedev「Dosugus」抱枕
- 临近2008,期待?困惑
- 字符集编码
- 19个整数在六边形中的排列问题
- 用一字段存储图片信息和文字信息的处理
- 起个大早
- 企业信息化中的“标准”、“行业”和“个性”
- 荣获2007年7月微软最有价值专家(MVP)
- [下载]ERP项目可行性研究报告
- JEE5标准与Struts/Spring/Hibernate等诸多开源框架的比较分析
- 项目管理手记(五) DRP项目中的数据治理
- 信息化给企业带来的好处
- 开源商业智能威胁传统市场