How to add row to datagridview using list

六月ゝ 毕业季﹏ 提交于 2020-06-18 11:01:52

问题


I need help adding rows to datagridwiev using list. I have a class

 public class GridObject
    {
        public string Worker
        {
            get;
            set;
        }

        [DisplayName("Item name")]
        public string ItemName
        { get; set; }

        public int Price { get; set; }

        public int Quantity { get; set; }


    }

And i am making win form app that sould display slod items in datagridview. By now i made it do it like this

private void btnCash_Click(object sender, EventArgs e)
        {
             dt = new System.Data.DataTable();
            using (SqlConnection con = Helper.ConnectionToDatabase)
            {                  
                SqlDataAdapter da = new SqlDataAdapter(string.Format(Resources.ViewCommand, tbUser.Text, ItemList.SelectedValue), con);
                da.Fill(dt);
                //dataDaily.Rows.Clear();
                foreach (DataRow item in dt.Rows)
                {
                    int n = dataDaily.Rows.Add();
                    dataDaily.Rows[n].Cells[0].Value = item[0].ToString();
                    dataDaily.Rows[n].Cells[1].Value = item[1].ToString();
                    dataDaily.Rows[n].Cells[2].Value = item[2].ToString();
                }
            }
        }

It works but I wanted to add a new column(quantity) that is not in database and that counts same itmes sold by one user(worker in my case). I tought doing it with list buy i don't know how to fill the list and than display it in datagridview


回答1:


Win Forms add Datagridview Row to list and Add Row to datagridview from List

// ADD ROW TO LIST

List<DataGridViewRow> DeletedRowsList = new List<DataGridViewRow>(); // Row List

 // Add the row for deletion to the list
        private void AddRowToList()
        {

        if (Kunde_dataGridView.CurrentRow.Cells.Count == Kunde_dataGridView.ColumnCount) // If all cels are selected on the current row
        {
            // New Row
            DataGridViewRow row = (DataGridViewRow)Kunde_dataGridView.SelectedRows[0].Clone(); // Clone the row and assign it to the row that will be added to the list
            for (int i = 0; i < Kunde_dataGridView.SelectedCells.Count; i++)
            {
                row.Cells[i].Value = Kunde_dataGridView.SelectedCells[i].Value;
            }
            DeletedRowsList.Add(row); // Add the Cloned Row to the list
        }
    }

// Insert row from list to datagridview

    // Undo  Button
            private void undo_button_Click(object sender, EventArgs e)
            {


            if(DeletedRowsList.Count > 0)
            {
                int lastindex = DeletedRowsList.Count - 1;

// DataSet of the datagridview can be found in the Form Load

advokathusetDataSet.Kunde.Rows.Add(DeletedRowsList[lastindex].Cells[0].Value, DeletedRowsList[lastindex].Cells[1].Value, DeletedRowsList[lastindex].Cells[2].Value, DeletedRowsList[lastindex].Cells[3].Value, DeletedRowsList[lastindex].Cells[4].Value, DeletedRowsList[lastindex].Cells[5].Value, DeletedRowsList[lastindex].Cells[6].Value);
               SaveDatagridview(); // Save to DB  
               DeletedRowsList.RemoveAt(lastindex); // Remove Last index

            }


        }

// Only ADD Datagridview Row TO LIST

List<DataGridViewRow> DeletedRowsList = new List<DataGridViewRow>(); // Row List
 DataGridViewRow row = (DataGridViewRow)Kunde_dataGridView.SelectedRows[0].Clone(); // Clone the row and assign it to the row that will be added to the list
                for (int i = 0; i < Kunde_dataGridView.SelectedCells.Count; i++)
                {
                    row.Cells[i].Value = Kunde_dataGridView.SelectedCells[i].Value;
                }
                DeletedRowsList.Add(row); // Add the Cloned Row to the list

// Only Adding ROW from List to Datagridview

 // DataSet of the datagridview can be found in the Form Load 

//Here you can do also "yourDataset.table[0].Rows.Add(value,value.....); advokathusetDataSet.Kunde.Rows.Add(DeletedRowsList[lastindex].Cells[0].Value, DeletedRowsList[lastindex].Cells[1].Value, DeletedRowsList[lastindex].Cells[2].Value, DeletedRowsList[lastindex].Cells[3].Value, DeletedRowsList[lastindex].Cells[4].Value, DeletedRowsList[lastindex].Cells[5].Value, DeletedRowsList[lastindex].Cells[6].Value);




回答2:


you could use DataGridView.Columns.Add , this method accepts an object of DataGridViewColumn and add it to your grid view .... then you can use a loop to fill the value of this new column with whatever you want similar to what you are doing with rows




回答3:


DataTable table = new DataTable();
table.Columns.Add("First Name", typeof(string));
table.Columns.Add("Last Name", typeof(string));
table.Columns.Add("Age", typeof(int));

if (File.Exists("file.txt"))
{
    List<string[]> rows = File.ReadAllLines("file.txt").Select(x => x.Split(';')).ToList();
    foreach (var row in rows)
    {
        string fName = row[0];
        string lName = row[1];
        int age = -1;
        int.TryParse(row[2], out age);

        table.Rows.Add(fName,lName,age);
    }
}
dataGridView1.DataSource = table;



回答4:


You could do it like this:

public class GridObject
{
    public string Worker { get; set; }
    public string ItemName { get; set; }
    public int Price { get; set; }
    public int Quantity { get; set; }

    public override string ToString()
    {
        return ItemName;
    }

}

and just bind it like other have said.

More info, try to read this



来源:https://stackoverflow.com/questions/44759202/how-to-add-row-to-datagridview-using-list

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!