您的位置:首页 > 其它

用一字段存储图片信息和文字信息的处理

2007-12-23 06:46 302 查看
前几天做个公司的宣传网站,学习了前辈们的经验把数据库设计成这样:

商品:
(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("没有选择商品.");


}


}


}


}

这样做,目的是让管理者可以无限制的添加商品的属性,包括多张图片.

但有一个不好的就是损失了性能.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: