在网上看到一个团购站 自己学着研究一下 有个问题不明白 没整明白 望高人指点假设是这样一个团购系统:
每个用户可以发布一条团购信息 存入表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信息都有人加入的.  

解决方案 »

  1.   

    先把表A的ID放在Grid的某格(这里定义为第一格,实在不想显示出来就隐藏掉)
    没时间写东西,想来想去还是给你个例子好了,这个事件是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();
    }
             }