巨难的问题,在线等

cgq214 2003-01-25 10:14:49
以下为一出库明细表单


出库明细表单

-------|--------|--------|-----------------------------------------------|
| | | 尺码 |
仓库 | 款号 | 色号 |------|------|------|------|-------|-----|-----|
| | | XL | ML | ... | L | ... | SL | ... |
-------|--------|--------|------|------|------|------|-------|-----|-----|
A | A | A | 2 | | | 6 | | | |
-------|--------|--------|------|------|------|------|-------|-----|-----|

出库明细表 数据库结构

-------|--------|--------|----------|--------|
| | | | |
仓库 | 款号 | 色号 | 尺码 | 数量 |
| | | | |
-------|--------|--------|----------|--------|
A | A | A | XL | 2 |
-------|--------|--------|----------|--------|
A | A | A | L | 6 |
-------|--------|--------|----------|--------|

尺码定义 数据库结构

-------|--------|
ID | 名称 |
-------|--------|
01 | XL |
-------|--------|
02 | ML |
-------|--------|
... | ... |
-------|--------|
04 | L |
-------|--------|

问题:

1:如何在ASP.NET的DataGride中实现增加,编辑,更新,删除这样的“出库明细表单”
2:如何从数据库查询“出库明细表 数据库结构”,显示为“出库明细表单”
3:这个问题其实有点象距阵的行列转换的问题。如果做过服装的分销系统的朋友
应该会碰到这样的问题的。

大家给点思路dataset?xml?还是其他?,交流交流,我头很晕,大家帮帮
mail:cgq214@hotmail.com



...全文
36 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
huan_jinwu 2003-01-26
  • 打赏
  • 举报
回复
楼上说的是在winFOrm中的!
楼主说的好象是webForm!
如果是webform楼主不妨用DataReader自已写一个表格!并且为每条记录 加入删除,更改等工功能!可能会烦一点,但是功能强大!可组成任意表头表元!
howbigsea 2003-01-25
  • 打赏
  • 举报
回复

主要是datagrid的头怎样设置成两层的,
怎样在一个里面显示两个表的数据,这里有部分代码(别人的^_^)
一个例子说明如何实现将来自不同DataTable的数据显示在DataGrid中。

基本思路:很显然,DataGrid不能同时绑定两个DataTable,那么,要使它显示两个不同DataTable的数据,就只有在DataGridColumn中下功夫了。以上面的结构为例,我们建立一个继承DataGridTextBoxColumn的类DataGridJoinColumn,重载GetColumnValueAtRow方法。这个类要实现的功能是:数据源是DataTable1,返回值是DataTable1.EmployeeID对应的DataTable2.LastName或DataTable2.FirstName。DataTable1.EmployeeID与DataTable2.EmployeeID是1对多联系,我们将这个联系添加到DataSet中,就可以通过GetParentRow(relation)方法取得DataTable1.EmployeeID对应的DataTable2.LastName和DataTable2.FirstName的值。具体代码如下:

public class JoinTextBoxColumn : DataGridTextBoxColumn
{
string relation; //表示DataTable1.EmployeeID与DataTable2.EmployeeID的1对多联系
DataColumn col; //表示返回DataTable2的列
public JoinTextBoxColumn(string relation,DataColumn col )
{
this.relation=relation;
this.col=col;
base.ReadOnly=true;
}
protected override object GetColumnValueAtRow(CurrencyManager cm,int RowNum)
{
try
{
DataRow dr=((DataView)cm.List)[RowNum].Row;
DataRow parentdr=dr.GetParentRow(relation);
return parentdr[col]; //返回值是DataTable1.EmployeeID对应的LastName或FirstName
}
catch
{
return ""; //避免在添加新行时发生异常
}
}
protected override bool Commit(CurrencyManager cm,int RowNum)
{
return false;
}
public new bool ReadOnly
{
get {return true;}
}
}

下面的代码说明了如何使用类DataGridJoinColumn。新建一个Windows程序,加入一个DataGrid和一个SqlConnection,连接数据库NorthWind。 在Form_Load中加入下面代码:

private void Form1_Load(object sender, System.EventArgs e)
{
SqlDataAdapter sda1=new SqlDataAdapter("select EmployeeID,LastName,FirstName from Employees",this.sqlConn);
SqlDataAdapter sda3=new SqlDataAdapter("select OrderID,EmployeeID,OrderDate,RequiredDate from Orders",this.sqlConn);

ds=new DataSet();
sda1.Fill(ds,"emp");
sda3.Fill(ds,"ord");

ds.Relations.Add("ord_emp",ds.Tables["emp"].Columns["EmployeeID"],ds.Tables["ord"].Columns["EmployeeID"]);

ds.Tables["ord"].Columns.Add("lastName",typeof(string));
ds.Tables["ord"].Columns.Add("firstName",typeof(string));

DataGridTableStyle dt=new DataGridTableStyle();
DataGridColumnStyle dc;

dc=new DataGridTextBoxColumn();
dc.MappingName="OrderID";
dc.HeaderText="OrderID";
dt.GridColumnStyles.Add(dc);

dc=new DataGridTextBoxColumn();
dc.MappingName="EmployeeID";
dc.HeaderText="EmployeeID";
dt.GridColumnStyles.Add(dc);

dc=new JoinTextBoxColumn("ord_emp",ds.Tables["emp"].Columns["firstName"]);
dc.MappingName="firstName";
dc.HeaderText="firstName";
dt.GridColumnStyles.Add(dc);

dc=new JoinTextBoxColumn("ord_emp",ds.Tables["emp"].Columns["lastName"]);
dc.MappingName="lastName";
dc.HeaderText="lastName";
dt.GridColumnStyles.Add(dc);

dc=new DataGridTextBoxColumn();
dc.MappingName="OrderDate";
dc.HeaderText="OrderDate";
dt.GridColumnStyles.Add(dc);

dc=new DataGridTextBoxColumn();
dc.MappingName="RequiredDate";
dc.HeaderText="RequiredDate";
dt.GridColumnStyles.Add(dc);

dt.MappingName="ord";
this.dataGrid1.TableStyles.Add(dt);

this.dataGrid1.DataSource=ds;
this.dataGrid1.DataMember="ord";
}




vasun 2003-01-25
  • 打赏
  • 举报
回复
好痛苦,佩服你。
建议你看:
http://www.csdn.net/develop/Read_Article.asp?Id=14114

62,025

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧