在网上看到一个团购站 自己学着研究一下 有个问题不明白 没整明白 望高人指点假设是这样一个团购系统:
每个用户可以发布一条团购信息 存入表a 里面有一个字段是 要求人数(RequireCount)
a 表结构(我只写问题相关的字段)
id--主键
fuer-发布人id(与用户表中用户id 一致)
...
...
RequireCount--要求人数
b表为加入的用户表
b 表结构
id-主键
uid-加入该团购的用户id
sid-为团够信息a表中id字段一致
现在要显示这样一个信息 就是一个datagrid 要显示出 :
团购标题 发布人 加入人数/要求人数
例如 xxx aa 2/10
2/10 就代表要求10个人 加入了2人现在除了那个已加入人数外很简单 就是从团购表a读出即可
但是那个已加入人数是怎么做的呢
我可以通过select Count(*) from b where sid=@id(id 为a 中id)获得某条团购信息加入的人数
可是怎么在我需要显示的datagrid 中帮定显示出来呢
还有一个就是不是所有团购a 表的每个id信息都有人加入的.
每个用户可以发布一条团购信息 存入表a 里面有一个字段是 要求人数(RequireCount)
a 表结构(我只写问题相关的字段)
id--主键
fuer-发布人id(与用户表中用户id 一致)
...
...
RequireCount--要求人数
b表为加入的用户表
b 表结构
id-主键
uid-加入该团购的用户id
sid-为团够信息a表中id字段一致
现在要显示这样一个信息 就是一个datagrid 要显示出 :
团购标题 发布人 加入人数/要求人数
例如 xxx aa 2/10
2/10 就代表要求10个人 加入了2人现在除了那个已加入人数外很简单 就是从团购表a读出即可
但是那个已加入人数是怎么做的呢
我可以通过select Count(*) from b where sid=@id(id 为a 中id)获得某条团购信息加入的人数
可是怎么在我需要显示的datagrid 中帮定显示出来呢
还有一个就是不是所有团购a 表的每个id信息都有人加入的.
没时间写东西,想来想去还是给你个例子好了,这个事件是Grid的OnItemDataBound事件,在页面就可以注册。
这里也是先要获取论文的ID,才能根据此ID进行搜索论文的作者(论文和作者是分开不同的表的)
dropAuthor是一个在页面的Grid里面每列都有的DropDownList,这里改成你需要的控件就行。 public void ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
string strItemID;
SqlConnection MyConnection = cn;
SqlCommand cmdSelect;
SqlDataReader dtrAuthor; strItemID=Convert.ToString(e.Item.Cells[0].Text);
cn2.ConnectionString = (@"Server=(local);uid=silentwins;pwd=1061sdj;database=Killua") ;
cn2.Open();
cmdSelect=new SqlCommand("select 作者姓名 FROM (论文信息 inner join 论文发表 ON 论文信息.序列号 = 论文发表.序列号) inner join 作者信息 ON 作者信息.学号 = 论文发表.学号 where 论文信息.序列号=@strItemID",cn2);
cmdSelect.Parameters.Add("@strItemID" , strItemID);
dtrAuthor=cmdSelect.ExecuteReader();
DropDownList drop=(DropDownList)e.Item.FindControl("dropAuthor");
drop.DataSource=dtrAuthor;
drop.DataTextField="作者姓名";
drop.DataBind();
dtrAuthor.Close();
cn2.Close();
}
}