商品进销存系统,支持各种卖家,如何设计更合理? 最好是设计成,可以设定产品类别对应的显示那些字段的功能。即在左边点击某一类别后,从设定中读取出对应的显示字段,可编辑列等相关信息。然后重新绑定你的gridview。就是一个这样的思路,可能具体实施起来会形成一个系统。但有助与后续功能的开发和控制。。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 商品类别层数未知的话,用递归建吧ID Name PID绑定TreeNode的url时,把对应的ID绑定上 1、产品类别对应的需要显示的字段开发人员是不知道的,是用户自定义的,因为开发人员并不知道软件使用者是卖什么商品的2、产品类别对应的需要显示的几个关键字段,这几个字段不仅要在DataGridView上需要显示,同时也要在双击记录弹出的明细窗体上也需要显示,并且需要按顺序显示所有的自定义字段我的设计表为:商品类别表:typeId name parentId1 家用电器 02 小家电 13 电吹风 2商品类别和对应的字段的关系表:ID typeId fieldName displayName fieldType value unit isMajorField controlType1 3 goodsName 商品名称 string HP8203 1 textbox2 3 productCompany 生产厂家 string Philips 1 textbox3 3 stock 库存量 int 10 只 1 textbox4 3 weight 产品净重 fload 0.65 KG 0 textbox5 3 color 颜色 string 粉红 1 combolbox 这个系统的问题关键是在,该系统的使用者是卖任何商品的,所以商品类别和商品都是需要用户来自定义,大家觉得我的表设计有什么问题存在不? 或者希望大家能给一个更好的设计方案,谢谢 用treeView控件就可以搞店了#region TreeNode 添加无限节点函数 /// <summary> /// TreeNode 添加无限节点函数 /// </summary> /// <param name="treeNodeCollection"></param> /// <param name="dt"></param> /// <param name="AreaID"></param>本级编码 /// <param name="SjAreaID"></param>上级编码 /// <param name="AreaName"></param>本级编码名称 /// <param name="ParentFlag"></param>上级编码标志 /// LoadTreeNode(treeView1.Nodes[0].Nodes, dte, "AreaID", "SjAreaID", "AreaNanme", "0"); 引用函数 /// treeView1.Nodes[0].Expand();展开父节点 public void LoadTreeNode(TreeNodeCollection treeNodeCollection, DataTable dt, string AreaID, string SjAreaID, string AreaName, string ParentFlag) { try { if (dt.Rows.Count <= 0) return; TreeNode tmpNode; string oldFilter = dt.DefaultView.RowFilter; DataView dv = new DataView(dt); dv.Sort = dt.DefaultView.Sort; if (dv[0][SjAreaID].GetType() == typeof(System.String)) dv.RowFilter = SjAreaID + "='" + ParentFlag + "'"; else dv.RowFilter = SjAreaID + "=" + ParentFlag; if (oldFilter != string.Empty) dv.RowFilter = dv.RowFilter + " and " + oldFilter; foreach (DataRowView drv in dv) { tmpNode = new TreeNode(); tmpNode.Text = drv[AreaName].ToString().Trim() + "(" + drv[AreaID] + ")"; tmpNode.Tag = drv[AreaID]; string father = drv[AreaID].ToString(); treeNodeCollection.Add(tmpNode); LoadTreeNode(tmpNode.Nodes, dt, AreaID, SjAreaID, AreaName, father); } } catch (Exception te) { MessageBox.Show(te.Message, "信息提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); } } #endregion 另外加一个表存用户的商品类别:userid usertypeId 1000 1,2,3,4...1001 2,3,4 .......................... Tree递归,显示各种类的商品名称每一种商品都对应一个商品类别 好像大家都没理解我的意思啊,我问的问题并不是Tree怎么实现,而是针对商品的自定义,数据库表应怎么设计?“每一种商品都对应一个商品类别”你说的这个应该是针对已经存在的商品来说的,可现在没有一个常规的商品表,因为不同商品的规则参数都是不同的,不能简单的将所有商品存在一个商品表的,不能简单的认为只要建一个商品种类表和一个商品表,商品表对应商品种类表的主键,不能简单的这么认为啊。郁闷啊,大家都想的太简单了 关于多线程问题 这代码 哪错了? 因为没找到wpf板块,所以把问题发这里了。 GridView中的DataSource问题 (C#.net)在内存中生成的缩略图,如何把该缩略图赋给image控件来显示? SQL 修改表的列为标识列 请教关于软件的使用并给与导出的技术 请问WPF Window设置不能最大化 C#中如何增,删,改,查SQL SERVER的IMAGE字段内容 c# .vs. delphi c#+vs2005开发GIS 控制威迪杰喷码机换行问题
商品类别层数未知的话,用递归建吧
ID Name PID
绑定TreeNode的url时,把对应的ID绑定上
2、产品类别对应的需要显示的几个关键字段,这几个字段不仅要在DataGridView上需要显示,同时也要在双击记录弹出的明细窗体上也需要显示,并且需要按顺序显示所有的自定义字段
我的设计表为:
商品类别表:
typeId name parentId
1 家用电器 0
2 小家电 1
3 电吹风 2商品类别和对应的字段的关系表:
ID typeId fieldName displayName fieldType value unit isMajorField controlType
1 3 goodsName 商品名称 string HP8203 1 textbox
2 3 productCompany 生产厂家 string Philips 1 textbox
3 3 stock 库存量 int 10 只 1 textbox
4 3 weight 产品净重 fload 0.65 KG 0 textbox
5 3 color 颜色 string 粉红 1 combolbox
这个系统的问题关键是在,该系统的使用者是卖任何商品的,所以商品类别和商品都是需要用户来自定义,大家觉得我的表设计有什么问题存在不? 或者希望大家能给一个更好的设计方案,谢谢
#region TreeNode 添加无限节点函数
/// <summary>
/// TreeNode 添加无限节点函数
/// </summary>
/// <param name="treeNodeCollection"></param>
/// <param name="dt"></param>
/// <param name="AreaID"></param>本级编码
/// <param name="SjAreaID"></param>上级编码
/// <param name="AreaName"></param>本级编码名称
/// <param name="ParentFlag"></param>上级编码标志
/// LoadTreeNode(treeView1.Nodes[0].Nodes, dte, "AreaID", "SjAreaID", "AreaNanme", "0"); 引用函数
/// treeView1.Nodes[0].Expand();展开父节点
public void LoadTreeNode(TreeNodeCollection treeNodeCollection, DataTable dt, string AreaID, string SjAreaID, string AreaName, string ParentFlag)
{
try
{
if (dt.Rows.Count <= 0) return;
TreeNode tmpNode;
string oldFilter = dt.DefaultView.RowFilter;
DataView dv = new DataView(dt);
dv.Sort = dt.DefaultView.Sort;
if (dv[0][SjAreaID].GetType() == typeof(System.String))
dv.RowFilter = SjAreaID + "='" + ParentFlag + "'";
else
dv.RowFilter = SjAreaID + "=" + ParentFlag;
if (oldFilter != string.Empty)
dv.RowFilter = dv.RowFilter + " and " + oldFilter;
foreach (DataRowView drv in dv)
{
tmpNode = new TreeNode();
tmpNode.Text = drv[AreaName].ToString().Trim() + "(" + drv[AreaID] + ")";
tmpNode.Tag = drv[AreaID];
string father = drv[AreaID].ToString();
treeNodeCollection.Add(tmpNode);
LoadTreeNode(tmpNode.Nodes, dt, AreaID, SjAreaID, AreaName, father);
}
}
catch (Exception te)
{
MessageBox.Show(te.Message, "信息提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
}
#endregion
userid usertypeId
1000 1,2,3,4...
1001 2,3,4 .....
.....................
每一种商品都对应一个商品类别
好像大家都没理解我的意思啊,我问的问题并不是Tree怎么实现,而是针对商品的自定义,数据库表应怎么设计?“每一种商品都对应一个商品类别”你说的这个应该是针对已经存在的商品来说的,可现在没有一个常规的商品表,因为不同商品的规则参数都是不同的,不能简单的将所有商品存在一个商品表的,不能简单的认为只要建一个商品种类表和一个商品表,商品表对应商品种类表的主键,不能简单的这么认为啊。郁闷啊,大家都想的太简单了