我这里3张表
carinfo cardinfo userinfo
carlicense(pk) userID(fk) cardcode(pk) userID(fk) userID(pk)因为字段多的关系,在一行显示不下
我想实现一个每一行前面都有一个“+”然后点以下加号就可以显示相关信息的 gridcontrol
高手说只要在dataset里设置下表的关系 拖个gridcontrol 然后gridControl1.DataSource = dt.Tables["表"];
就行了,可是我怎么也做不出来,先让大家给我看看代码是否有错误。另外,在sqlserver2000里我没有设置外键。代码如下: try
{
string mysql = "select * from carinfo";
m_dataadapter = new SqlDataAdapter(mysql,m_connection);
m_ds = new DataSet();
m_dataadapter.Fill(m_ds, "carinfo");
mysql = "select * from cardinfo";
m_dataadapter.SelectCommand.CommandText = mysql;
m_dataadapter.Fill(m_ds, "cardinfo"); mysql = "select * from userinfo";
m_dataadapter.SelectCommand.CommandText = mysql;
m_dataadapter.Fill(m_ds, "userinfo"); m_ds.Tables["carinfo"].Columns["carlicense"].Unique = true;
m_ds.Tables["carinfo"].Columns["carlicense"].AllowDBNull = false;
m_ds.Tables["carinfo"].PrimaryKey = new DataColumn[] { m_ds.Tables["carinfo"].Columns["carlicense"] }; m_ds.Tables["cardinfo"].Columns["cardcode"].Unique = true;
m_ds.Tables["cardinfo"].Columns["cardcode"].AllowDBNull = false;
m_ds.Tables["cardinfo"].PrimaryKey = new DataColumn[] { m_ds.Tables["cardinfo"].Columns["cardcode"] };
m_ds.Tables["UserInfo"].Columns["userID"].Unique = true;
m_ds.Tables["UserInfo"].Columns["userID"].AllowDBNull = false;
m_ds.Tables["UserInfo"].PrimaryKey = new DataColumn[] { m_ds.Tables["UserInfo"].Columns["userID"] };
//约束关系
fk1 = new ForeignKeyConstraint("usercar", m_ds.Tables["UserInfo"].Columns["userID"],
m_ds.Tables["carinfo"].Columns["userID"]);
m_ds.Tables["carinfo"].Constraints.Add(fk1);
fk2 = new ForeignKeyConstraint("usercard", m_ds.Tables["UserInfo"].Columns["userID"],
m_ds.Tables["cardinfo"].Columns["userID"]);
m_ds.Tables["cardinfo"].Constraints.Add(fk2); gridControl1.DataSource = m_ds;
gridControl1.DataMember = "UserInfo";
}
catch (SystemException ex)
{
MessageBox.Show(ex.Message + "请稍后再试");
}
carinfo cardinfo userinfo
carlicense(pk) userID(fk) cardcode(pk) userID(fk) userID(pk)因为字段多的关系,在一行显示不下
我想实现一个每一行前面都有一个“+”然后点以下加号就可以显示相关信息的 gridcontrol
高手说只要在dataset里设置下表的关系 拖个gridcontrol 然后gridControl1.DataSource = dt.Tables["表"];
就行了,可是我怎么也做不出来,先让大家给我看看代码是否有错误。另外,在sqlserver2000里我没有设置外键。代码如下: try
{
string mysql = "select * from carinfo";
m_dataadapter = new SqlDataAdapter(mysql,m_connection);
m_ds = new DataSet();
m_dataadapter.Fill(m_ds, "carinfo");
mysql = "select * from cardinfo";
m_dataadapter.SelectCommand.CommandText = mysql;
m_dataadapter.Fill(m_ds, "cardinfo"); mysql = "select * from userinfo";
m_dataadapter.SelectCommand.CommandText = mysql;
m_dataadapter.Fill(m_ds, "userinfo"); m_ds.Tables["carinfo"].Columns["carlicense"].Unique = true;
m_ds.Tables["carinfo"].Columns["carlicense"].AllowDBNull = false;
m_ds.Tables["carinfo"].PrimaryKey = new DataColumn[] { m_ds.Tables["carinfo"].Columns["carlicense"] }; m_ds.Tables["cardinfo"].Columns["cardcode"].Unique = true;
m_ds.Tables["cardinfo"].Columns["cardcode"].AllowDBNull = false;
m_ds.Tables["cardinfo"].PrimaryKey = new DataColumn[] { m_ds.Tables["cardinfo"].Columns["cardcode"] };
m_ds.Tables["UserInfo"].Columns["userID"].Unique = true;
m_ds.Tables["UserInfo"].Columns["userID"].AllowDBNull = false;
m_ds.Tables["UserInfo"].PrimaryKey = new DataColumn[] { m_ds.Tables["UserInfo"].Columns["userID"] };
//约束关系
fk1 = new ForeignKeyConstraint("usercar", m_ds.Tables["UserInfo"].Columns["userID"],
m_ds.Tables["carinfo"].Columns["userID"]);
m_ds.Tables["carinfo"].Constraints.Add(fk1);
fk2 = new ForeignKeyConstraint("usercard", m_ds.Tables["UserInfo"].Columns["userID"],
m_ds.Tables["cardinfo"].Columns["userID"]);
m_ds.Tables["cardinfo"].Constraints.Add(fk2); gridControl1.DataSource = m_ds;
gridControl1.DataMember = "UserInfo";
}
catch (SystemException ex)
{
MessageBox.Show(ex.Message + "请稍后再试");
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货