在DataGridView中添加新的Row [at RunTime]会替换先前添加的Row

时间:2017-10-15 10:32:19

标签: c# sql-server winforms dapper

我想要(当按下Click时)前一行仍然存在于datagridview中,同时添加新行(这样用户可以在datagridview中添加他/她想要的数据行)。

我在stackoverflow.com上发现了很多关于datagridview行的问题,但我无法根据我的问题找出它们。其次,我是Dapper的新手,所有答案都是使用ADO.NET。

我有一个想法,应该有一个简单的方法来解决这个问题。

我将datagridview绑定到Orders Class。

这是我的订单类......

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace test
{
    public class Orders
    {
        public int    ItemId      { get; set; }
        public string ItemName    { get; set; }
        public string Brand       { get; set; }
        public string Category    { get; set; }
        public int    Quantity    { get; set; }
        public int    Price       { get; set; }
    }
}

选择按钮单击事件是..

private void btn_select_Click(object sender, EventArgs e)
    {

        using (IDbConnection db = new SqlConnection(ConfigurationManager.ConnectionStrings["Connection"].ConnectionString))
        {
            if (db.State == ConnectionState.Closed)
                db.Open();
            string query = "SELECT *FROM tbl_ItemDetail WHERE ItemName=@ItemName";
            ordersBindingSource.DataSource = db.Query<Orders>(query, new { ItemName = txt_sell_item.Text });

        }
    }

当我输入ItemName为'bread'时,GUI就是..

When enter ItemName as 'bread'

但是当我输入ItemName为'bjn'时,第一行将替换为最新的行..

When enter ItemName as 'bjn'

1 个答案:

答案 0 :(得分:0)

问题背后的主要原因在于NA,每次用户点击按钮时,您都会绑定button click event handler,按钮会按预期显示一条记录。不要分配DataSource,而是编写一个插入语句,在网格中插入记录。通过这样做,您的问题肯定会得到解决。

我没有给代码解决方案,因为我现在没有我的电脑。