当前位置: 代码迷 >> C# >> dataGridView超出索引,该如何解决
  详细解决方案

dataGridView超出索引,该如何解决

热度:492   发布时间:2016-04-28 08:43:40.0
dataGridView超出索引
        /// <summary>
        /// 根据选择的门店名称查询出门店的订单信息
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
        {

            string itemtxt = comboBox1.Text;
            //根据门店名称查询门店采购单信息
            string sql = string.Format("select CommodityName as 商品名称,OrderQuantity as 采购数量,ReplenishmentQuantity as 补购数量,OrderSum as 总数量 from PurchaseTable where StoreName = '{0}'", itemtxt);
             try 
                {
                 //打开连接
                    SqlCommand comm = new SqlCommand(sql, DBHelper.conn);
                    DBHelper.conn.Open();

                }catch(Exception ex)
                {
                    Console.Write(ex.Message);
                }
                finally
                {
                    DBHelper.conn.Close();
                }
                SqlDataAdapter da = new SqlDataAdapter(sql, DBHelper.conn);
                DataSet ds = new DataSet();
                da.Fill(ds);
                this.dataGridView1.DataSource = ds.Tables["PurchaseTable"];
                //设置单元的列名称
                dataGridView1.Columns[0].HeaderText = "商品名称";
                dataGridView1.Columns[1].HeaderText = "采购数量";
                dataGridView1.Columns[2].HeaderText = "补购数量";
                dataGridView1.Columns[3].HeaderText = "总数量";
                //设置单元格的宽度
                dataGridView1.Columns[0].AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells;
                dataGridView1.Columns[1].AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells;
                dataGridView1.Columns[2].AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells;
                dataGridView1.Columns[3].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
          }

        private void button6_Click(object sender, EventArgs e)
        {
            DataSet ds = new DataSet("Polihua001");
            SqlDataAdapter sda = new SqlDataAdapter();
            DialogResult result = MessageBox.Show("确定要保存商品的补购数量?", "补购操作", MessageBoxButtons.OKCancel);
            if (result == DialogResult.OK)
            {
                SqlCommandBuilder scb = new SqlCommandBuilder(sda);
                sda.Update(ds, "PurchaseTable");
                
            }
        }

运行提示超出索引值?
数据库:

------解决思路----------------------
 this.dataGridView1.DataSource = ds.Tables["PurchaseTable"];

-》这句的确会显示 绑定Table到dgv ,不过显示的应该是英文的列名称,lz想换成中文的吧。
需要自定义列了,在columns中手动添加列,修改FileName与HeaderText的值。
------解决思路----------------------
引用:
 this.dataGridView1.DataSource = ds.Tables["PurchaseTable"];

-》这句的确会显示 绑定Table到dgv ,不过显示的应该是英文的列名称,lz想换成中文的吧。
需要自定义列了,在columns中手动添加列,修改FileName与HeaderText的值。

FileName 为 你sql语句的 as 后面的部分。不使用 as 的就是数据表的 列名。
------解决思路----------------------
上面写错了,或者
da.Fill(ds);
this.dataGridView1.DataSource = ds.Tables[0];
  相关解决方案