如何在此数据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();
}
答案 0 :(得分:0)
你将不得不在这里提供更多代码,我完全不知道你要做什么。 medleft在其他地方宣布了吗?
你的medicineLeft()方法自行返回,这意味着它将作为无限循环运行,并可能在此行上抛出StackOverflow异常:
datagridview_information.Rows[counterSelected].Cells[5].Value = medicineLeft();
你的medicineLeft方法需要返回一个整数 - 是否意味着返回medleft?如果是这样,将其更改为return medleft;
应解决此问题。
答案 1 :(得分:0)
一个简单的解决方案是改变填充DataGridView
的方式。如果我这样做,我会做以下事情:
创建一个类对象以在网格中存储所需的数据:
public class Medicine
{
public string BrandName { get; set; }
public string GenericName { get; set; }
<... add other properties ...>
}
实例化要绑定到Medicine
的{{1}}个对象的集合。
DataGridView
将集合绑定到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
我发现在表单上创建datagridview_information.DataSource = GetMedicines(dt.Rows);
控件很容易,在设计器中设置列,并在代码中将DataGridView
属性设置为AutoGenerateColumns
,以便网格显示为我希望。由您决定如何处理它。