2015-11-22 3 views
-1

Как я могу назвать свою функцию в этих данных gridview? Я хотел бы сделать сумма этих двух, которые будут отображаться в выделенном datagridview:Вызов функции void в datagridview C#

 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

Вы будете иметь, чтобы дать больше кода здесь, я совершенно не знаю, что вы пытаетесь сделать. Объявляется ли медалью в другом месте?

Ваш medicineLeft() метод возвращает себя, то есть он будет работать как бесконечный цикл, и, скорее всего, бросить исключение StackOverflow на этой линии:

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

Ваш метод medicineLeft должен возвращать целое число - это это означало вернуть медалью? Если это так, замените его на return medleft;.

0

Одним из простых решений было бы изменить способ заполнения DataGridView. Если бы я делал это, я хотел бы сделать следующее:

  1. Создание объекта класса для хранения данных, которые вы хотите в сетке:

    public class Medicine 
    { 
        public string BrandName { get; set; } 
        public string GenericName { get; set; } 
        <... add other properties ...> 
    } 
    
  2. Инстанцировать коллекцию Medicine объектов, которые вы хотите для привязки к 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; 
    } 
    
  3. Bind коллекция в DataGridView

    datagridview_information.DataSource = GetMedicines(dt.Rows); 
    

Мне легко создать DataGridView управления на форме, установить колонки в конструкторе, и установите AutoGenerateColumns свойство false в коде, чтобы сетка появилась, как я хочу. Это зависит от вас, как вы хотите справиться с этим.

Смежные вопросы