计划表:
计划ID(PK),项目ID,员工ID,计划内容 项目内容(视图,连接到项目表)
1 1 1 XXXXXX XXXXX
2 1 2 XXXXXX XXX
3 1 3 xxxxxx XXX
4 2 2 xxxxxx XXXXX
5 2 3 xxxxxx XXX现在我要查看项目进度,所以只需要项目ID和员工ID,要不重复的,就是说查出来要这样的结果
项目ID 项目内容
1 XXXXXXX
2 YYYYYYY虽然这样可以用SELECT distinct(项目ID),项目内容 FROM 计划表可是,我是要放在gridview中的,所以计划ID必须要写进SQL语句中,而且我需要从gridiew中中得到该行的主键值(计划ID),请问要怎么实现?我要实现的就是gridview中显示
项目ID 项目内容
1 XXXXXXX
2 YYYYYYY然后点某行,就把所有的进度在底下的datalist中显示出来
计划ID(PK),项目ID,员工ID,计划内容 项目内容(视图,连接到项目表)
1 1 1 XXXXXX XXXXX
2 1 2 XXXXXX XXX
3 1 3 xxxxxx XXX
4 2 2 xxxxxx XXXXX
5 2 3 xxxxxx XXX现在我要查看项目进度,所以只需要项目ID和员工ID,要不重复的,就是说查出来要这样的结果
项目ID 项目内容
1 XXXXXXX
2 YYYYYYY虽然这样可以用SELECT distinct(项目ID),项目内容 FROM 计划表可是,我是要放在gridview中的,所以计划ID必须要写进SQL语句中,而且我需要从gridiew中中得到该行的主键值(计划ID),请问要怎么实现?我要实现的就是gridview中显示
项目ID 项目内容
1 XXXXXXX
2 YYYYYYY然后点某行,就把所有的进度在底下的datalist中显示出来
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" AllowPaging="True" OnPageIndexChanging="GridView2_PageIndexChanging" PageSize="6" BackColor="White" BorderColor="White" BorderStyle="Ridge" BorderWidth="2px" CellPadding="3" CellSpacing="1" GridLines="None" OnRowUpdating="GridView2_RowUpdating" DataKeyNames="iPlanID">
<Columns>
<asp:BoundField DataField="iProjectID" HeaderText="项目ID" />
<asp:BoundField DataField="sProjectName" HeaderText="项目名称" />
<asp:TemplateField>
<ItemTemplate>
<asp:LinkButton ID="lk1" runat="server" Text="查看" CommandName="update"
CommandArgument="<%#((GridViewRow)Container).RowIndex%>"></asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
ASPX.CSprivate void bingdata()
{
string connstr = System.Configuration.ConfigurationManager.AppSettings["connstring"];
SqlConnection myconnection = new SqlConnection(connstr);
myconnection.Open();
string check = "select * from viewPlan";
SqlDataAdapter da = new SqlDataAdapter(check, myconnection);
DataSet ds = new DataSet();
da.Fill(ds, "table");
if (ds.Tables["table"].Rows.Count <= 0)
{
// Label1.Text = "暂无新项目!";
GridView1.Visible = false;
}
else
{
GridView1.DataSource = ds;
GridView1.DataBind();
myconnection.Close();
}
} protected void GridView2_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
string num = this.GridView1.DataKeys[e.RowIndex].Value.ToString();
string connstr = System.Configuration.ConfigurationManager.AppSettings["connstring"];
SqlConnection myc = new SqlConnection(connstr);
string check = "select * from viewPlan where iPlanID='" + num + "'";
SqlDataAdapter sda = new SqlDataAdapter(check, myc);
DataSet ds = new DataSet();
sda.Fill(ds, "table");
Label1.Text= ds.Tables[0].Rows[0]["iProjectID"].ToString();
binddata1();
} private void binddata1()
{
string connstr = System.Configuration.ConfigurationManager.AppSettings["connstring"];
SqlConnection myconnection = new SqlConnection(connstr);
myconnection.Open();
string check = "select * from viewPlan where iProjectID='"+Label1.Text+"' order by dPlanTime desc";
SqlDataAdapter mydataadapter1 = new SqlDataAdapter(check,myconnection);
DataSet mydataset = new DataSet();
mydataadapter1.Fill(mydataset, "content"); DataList1.DataSource = mydataset.Tables["content"].DefaultView;
DataList1.DataBind();
myconnection.Close();
//label4.Text = mydataset.Tables["content"].Rows.Count.ToString(); }
把 项目ID作为FK 和项目内容, 或者还有其他相关的一起分离出去做新表。
就可以得到相对应的你的需求了
如果是,同一项目只显示一行你已经办了,那你传递项目ID到datalist不是可以得到项目信息,为什么非要传递那个
主键计划ID。
例如你传 项目ID 1 作为参数,查询返回所有项目ID 为1的计划内容,那就返回三条记录1 1 1 XXXXXX XXXXX
2 1 2 XXXXXX XXX
3 1 3 xxxxxx XXX 然后绑到datalist就行了。
我就是想这样啊,关键是要把进度表弄到gridview中,就必须把主见也查进去,就变成select iPlanID,iProjectID,sProjectName from tbPlan
然而这样的话是查不到同一个项目只显示一行的,而select distinct(iProjectID),sProjectName from tbPlan是无法放在gridview中的,因为缺少主键我只不想要主键,可是不加主键又出错呀
计划ID(PK),项目ID,员工ID,计划内容 项目内容(视图,连接到项目表)
1 1 1 XXXXXX XXXXX
2 1 2 XXXXXX XXX
3 1 3 xxxxxx XXX
4 2 2 xxxxxx XXXXX
5 2 3 xxxxxx XXX 现在我要查看项目进度,所以只需要项目ID和员工ID,要不重复的,就是说查出来要这样的结果
项目ID 项目内容
1 XXXXXXX
2 YYYYYYY select 项目ID ,项目内容 from 计划表 where 计划表员工ID = 员工ID AND 计划表项目ID = 项目ID
LZ要着效果??
你主次关系理错了