private void Instrall_Activated(object sender, EventArgs e)
{
DGVFill("MainBody");
this.dataGridView1.DataSource = new Data.xSystemDST().MainBody; DataGridView DGV = dataGridView1;
DGV.Columns["pm"].Width = 40;
DGV.Columns["pm"].HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter;
DGV.Columns["pm"].HeaderText = "编码"; DGV.Columns["name"].Width = 40;
DGV.Columns["name"].HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter;
DGV.Columns["name"].HeaderText = "名称"; DGV.Columns["gg"].Width = 60;
DGV.Columns["gg"].HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter;
DGV.Columns["gg"].HeaderText = "规格"; //DGV.Columns["zl"].Visible = false;
DGV.Columns["sl"].Visible = false;
DGV.Columns["mony"].Visible = false;
DGV.Columns["bz"].Visible = false;
}private void DGVFill(string DataTableName)
{
Data.xSystemDST DST = new Data.xSystemDST(); SqlConnection Conn = new SqlConnection(ODBC.DataInstall.Datastr);
Conn.Open();
SqlDataAdapter dar = new SqlDataAdapter("Select [pm],[name],[gg],[zl],[sl],[mony] From [_Mainbody]", Conn);
DST.MainBody.Clear();
dar.Fill(DST, DataTableName);
Conn.Close();
}包含xSystemDST.xsd其中有表MainBody
上面代码运行后DataGridview能正确显示从Sql数据库Fill到Dst表中的列名称,但其中的数据显示不出来
已确定Sql数据库要Fill的表中绝对含有数据
{
DGVFill("MainBody");
this.dataGridView1.DataSource = new Data.xSystemDST().MainBody; DataGridView DGV = dataGridView1;
DGV.Columns["pm"].Width = 40;
DGV.Columns["pm"].HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter;
DGV.Columns["pm"].HeaderText = "编码"; DGV.Columns["name"].Width = 40;
DGV.Columns["name"].HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter;
DGV.Columns["name"].HeaderText = "名称"; DGV.Columns["gg"].Width = 60;
DGV.Columns["gg"].HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter;
DGV.Columns["gg"].HeaderText = "规格"; //DGV.Columns["zl"].Visible = false;
DGV.Columns["sl"].Visible = false;
DGV.Columns["mony"].Visible = false;
DGV.Columns["bz"].Visible = false;
}private void DGVFill(string DataTableName)
{
Data.xSystemDST DST = new Data.xSystemDST(); SqlConnection Conn = new SqlConnection(ODBC.DataInstall.Datastr);
Conn.Open();
SqlDataAdapter dar = new SqlDataAdapter("Select [pm],[name],[gg],[zl],[sl],[mony] From [_Mainbody]", Conn);
DST.MainBody.Clear();
dar.Fill(DST, DataTableName);
Conn.Close();
}包含xSystemDST.xsd其中有表MainBody
上面代码运行后DataGridview能正确显示从Sql数据库Fill到Dst表中的列名称,但其中的数据显示不出来
已确定Sql数据库要Fill的表中绝对含有数据
应该要使DataGridViewColumn的DataPerprotyName和DataTable中的字段名保持一致
否则,你可以设置AutoGenerateColumns = true
你就可以看到那些列其实已经绑过来了
但是没有和你设置的列对应上去。
this.dataGridView1.DataSource = new Data.xSystemDST().MainBody; DataGridView DGV = dataGridView1;
DGV.Columns["pm"].Width = 40;
DGV.Columns["pm"].HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter;
DGV.Columns["pm"].HeaderText = "编码"; DGV.Columns["name"].Width = 40;
DGV.Columns["name"].HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter;
DGV.Columns["name"].HeaderText = "名称"; DGV.Columns["gg"].Width = 60;
DGV.Columns["gg"].HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter;
DGV.Columns["gg"].HeaderText = "规格"; //DGV.Columns["zl"].Visible = false;
DGV.Columns["sl"].Visible = false;
DGV.Columns["mony"].Visible = false;
DGV.Columns["bz"].Visible = false;
问题自已解决了,红色的部分改成:
this.dataGridView1.DataSource = new Data.xSystemDST().MainBody.DefaultView;
DGVFill("MainBody");为:
private void DGVFill(string DataTableName)
{
Data.xSystemDST DST = new Data.xSystemDST(); SqlConnection Conn = new SqlConnection(ODBC.DataInstall.Datastr);
Conn.Open();
SqlDataAdapter dar = new SqlDataAdapter("Select [pm],[name],[gg],[zl],[sl],[mony] From [_Mainbody]", Conn);
DST.MainBody.Clear();
dar.Fill(DST, DataTableName);
Conn.Close();
}
xSystemDST 为 xSystemDST.xsd文件(DataSet的实体文件,需要在CrystalReport报表时设计报表用的,所以没用 DataSet Dst = new Dataset();)DataGridView DGV = dataGridView1;将DGV定义为DataGridView类型,并赋值:this.dataGridView1
将设用时,比如 datagridview1.columns[object].width 可以用 DGV.columns[object].width
列名称不是我自已写的,而是从DataTable读出来的时候他的名字是"pm",
我只是在DataGridview绑定完DataTable后,将列名称改为需要的中文而以
private void DGVFill(string DataTableName)
{
Data.xSystemDST DST = new Data.xSystemDST(); SqlConnection Conn = new SqlConnection(ODBC.DataInstall.Datastr);
Conn.Open();
SqlDataAdapter dar = new SqlDataAdapter("Select [pm],[name],[gg],[zl],[sl],[mony] From [_Mainbody]", Conn);
DST.MainBody.Clear();
dar.Fill(DST, DataTableName);
Conn.Close();
}
DGVFill(string DataTableName) 方法返回的是一个空值当然不行了!你得返回一个数据集啊!改下让他有返回值的!例如:
private DataSet DGVFill(string DataTableName)
{
Data.xSystemDST DST = new Data.xSystemDST(); SqlConnection Conn = new SqlConnection(ODBC.DataInstall.Datastr);
Conn.Open();
SqlDataAdapter dar = new SqlDataAdapter("Select [pm],[name],[gg],[zl],[sl],[mony] From [_Mainbody]", Conn);
DST.MainBody.Clear();
dar.Fill(DST, DataTableName);
Conn.Close();
return DST;
}
这样在上面接收的时候接收到的就是一个dataset数据集了!
{
DGVFill("MainBody"); //这里只负责对DataSet的DataTable绑定 this.dataGridView1.DataSource = new Data.xSystemDST().MainBody.DefaultView; //这里才是对数据的显示
DataGridView DGV = dataGridView1;
DGV.Columns["pm"].Width = 40;
DGV.Columns["pm"].HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter;
DGV.Columns["pm"].HeaderText = "编码"; DGV.Columns["name"].Width = 40;
DGV.Columns["name"].HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter;
DGV.Columns["name"].HeaderText = "名称"; DGV.Columns["gg"].Width = 60;
DGV.Columns["gg"].HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter;
DGV.Columns["gg"].HeaderText = "规格"; //DGV.Columns["zl"].Visible = false;
DGV.Columns["sl"].Visible = false;
DGV.Columns["mony"].Visible = false;
DGV.Columns["bz"].Visible = false;
}
class myTableFill
{
static string _connstr = null, _sqlstr = null, _tablename = null;
public static string myTableFill_Connstr { get { return _connstr; } set { _connstr = value; } }
public static string myTableFill_Sqlstr { get { return _sqlstr; } set { _sqlstr = value; } }
public static string myTableFill_TableName { get { return _tablename; } set { _tablename = value; } } public static DataTable Fill()
{
try
{
if (_connstr == null || _sqlstr == null || _tablename == null)
{
return new DataTable();
}
Data.xSystemDST DST = new Data.xSystemDST();
SqlConnection Conn = new SqlConnection(_connstr);
SqlDataAdapter DAT = new SqlDataAdapter(_sqlstr, Conn);
DST.Tables[_tablename].Clear();
DAT.Fill(DST, _tablename);
Conn.Close();
return DST.Tables[_tablename];
}
catch
{
MessageBox.Show("错误:[201]\n\n代码块Program.myTableFill出现严重错误。\n数据库缓存未能正确建立,请检查与服务器是否正确连接。\n");
//Application.Exit();
return new DataTable();
}
} }