在datagridview中调用void函数c#

时间:2015-11-22 23:31:09

标签: c# datagridview

如何在此数据gridview中调用我的函数?我想将这两者的总和显示在突出显示的datagridview

        foreach (DataRow row in dt.Rows) {
           datagridview_information.Rows.Add();
           datagridview_information.Rows[counterSelected].Cells[0].Value = row["BrandName"].ToString();
           datagridview_information.Rows[counterSelected].Cells[1].Value = row["GenericName"].ToString();
           datagridview_information.Rows[counterSelected].Cells[2].Value = row["PresDayOfIntake"].ToString();
           datagridview_information.Rows[counterSelected].Cells[3].Value = row["Status"].ToString();
           datagridview_information.Rows[counterSelected].Cells[4].Value = "5";
           datagridview_information.Rows[counterSelected].Cells[5].Value = medicineLeft();
           datagridview_information.Rows[counterSelected].Cells[7].Value = row["ContainerNumber"].ToString();
           datagridview_information.Rows[counterSelected].Cells[8].Value = row["Status"].ToString(); ;
           counterSelected++;
        }
    }
}

public int medicineLeft()
{
    for (int i = 0; i < datagridview_schedule.Rows.Count; ++i)
    {
        medleft += Convert.ToInt32(datagridview_information.Rows[i].Cells[8]) - Convert.ToInt32(datagridview_medicine.Rows[i].Cells[4]);
        datagridview_information.Rows[i].Cells[5].Value = Convert.ToString(medleft);

    }
    return medicineLeft(); 
} 

2 个答案:

答案 0 :(得分:0)

你将不得不在这里提供更多代码,我完全不知道你要做什么。 medleft在其他地方宣布了吗?

你的medicineLeft()方法自行返回,这意味着它将作为无限循环运行,并可能在此行上抛出StackOverflow异常:

datagridview_information.Rows[counterSelected].Cells[5].Value = medicineLeft();

你的medicineLeft方法需要返回一个整数 - 是否意味着返回medleft?如果是这样,将其更改为return medleft;应解决此问题。

答案 1 :(得分:0)

一个简单的解决方案是改变填充DataGridView的方式。如果我这样做,我会做以下事情:

  1. 创建一个类对象以在网格中存储所需的数据:

    public class Medicine
    {
        public string BrandName { get; set; }
        public string GenericName { get; set; }
        <... add other properties ...>
    }
    
  2. 实例化要绑定到Medicine的{​​{1}}个对象的集合。

    DataGridView
  3. 将集合绑定到public List<Medicine> GetMedicine(DataRowCollection rows) { List<Medicine> medicines = new List<Medicine>(); foreach (DataRow row in rows) { Medicine medicine = new Medicine(); medicine.BrandName = row["BrandName"] == null ? string.Empty : row["BrandName"].ToString(); medicine.GenericName = row["GenericName"] == null ? string.Empty : row["GenericName"].ToString(); //more rows here to populate Medicine object //include the call to whatever methods are needed to populate the object medicines.Add(medicine); } return medicines; }

    DataGridView
  4. 我发现在表单上创建datagridview_information.DataSource = GetMedicines(dt.Rows); 控件很容易,在设计器中设置列,并在代码中将DataGridView属性设置为AutoGenerateColumns,以便网格显示为我希望。由您决定如何处理它。