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的表中绝对含有数据

解决方案 »

  1.   

    DataGridView不用.DataBind()的来绑定数据么?
      

  2.   

    DataList中显示的列不是从数据库读出来的吧,是上面的方法设置的,很明显吗,你下面的方法有问题啊。
      

  3.   

    如果你要用Dataset绑定DataGridView,
    应该要使DataGridViewColumn的DataPerprotyName和DataTable中的字段名保持一致
    否则,你可以设置AutoGenerateColumns = true
    你就可以看到那些列其实已经绑过来了
    但是没有和你设置的列对应上去。
      

  4.   

     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; 
    问题自已解决了,红色的部分改成:
    this.dataGridView1.DataSource = new Data.xSystemDST().MainBody.DefaultView;
      

  5.   

    回复4楼:
    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
      

  6.   

    回复4楼:
    列名称不是我自已写的,而是从DataTable读出来的时候他的名字是"pm",
    我只是在DataGridview绑定完DataTable后,将列名称改为需要的中文而以
      

  7.   

    你也太粗心了吧!你看看你的代码:
    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数据集了!
      

  8.   

    private void Instrall_Activated(object sender, EventArgs e) 
            { 
                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; 
            } 
      

  9.   

    谢谢大家的意思,我已经将DGVFill过程重写了个类
     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();
                }
            }    }