简体   繁体   中英

How to store values in a list or array and bind all to datatable then gridview

private void ListViewAddMethod(string fItem, string sItem, string tItem, string foItem)
    {
        List<ReportList> alstNames = new List<ReportList>();
        alstNames.Add(new ReportList(fItem, sItem, tItem, foItem));

        DataTable dt = new DataTable();

        dt.Columns.Add("Particulars", typeof(string));
        dt.Columns.Add("Amount", typeof(string));
        dt.Columns.Add("Particulars1", typeof(string));
        dt.Columns.Add("Amount1", typeof(string));

        foreach (var lstNames in alstNames)
        {
            // Add new Row - inside the foreach loop - to enable creating new row for each object.
            DataRow row = dt.NewRow();
            row["Amount"] = fItem;
            row["Particulars"] = sItem;
            row["Particulars1"] = tItem;
            row["Amount1"] = foItem;
            dt.Rows.Add(row);

            dgvProfitAndLoss.DataSource = alstNames;
            dgvProfitAndLoss.DataBind();
        }

    }

This returns only the most recent row added and ignores the others. How do I create an array from parameters passed to a method and bind them to a gridview?

Your code does not look good. First, you are doing a loop over the alstNames and binding it into a gridview over each iteration of this loop. Second, you do not need a DataTable to bind it into a grid and your code you are just creating a DataTable on the heap , adding some Rows and keep it to Garbage Collector remove it, you are not even using it. Third, considering you are doing a method to add a new item on the GRidView, remove the initilization of your list to the scope of your class and keep it a valid instance (or static one if it is the case):

// declare the list output of the method
private private List<ReportList> alstNames = new List<ReportList>();

private void ListViewAddMethod(string fItem, string sItem, string tItem, string foItem)
{    
    // add the ReportList on the list
    alstNames.Add(new ReportList(fItem, sItem, tItem, foItem));

    // bind it on the gridView
    dgvProfitAndLoss.DataSource = alstNames;
    dgvProfitAndLoss.DataBind();
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM