PDA

View Full Version : مشکل در فقط ثبت یک رکورد درون datagirdview



mehdiba3
یک شنبه 27 بهمن 1392, 12:05 عصر
کد زیر را برای این نوشتم که بتونم مفهوم llist,class را بفهمم . در این کد از یک کلاس استفاده شده که مقادیر درون آن رو به arraylist ارسال کرده و سپس در دیتاگرید نمایش می دهد. مشکل اینجاست که زمانی که داده ها را توسط تکس باکس ارسال می کنم ، دیتاگرید فقط یک رکورد را نشان می دهم و اگر رکورد جدیدی بخواهم درج کنم رکورد قبلی پاک شده و رکورد جدید جایگزین می شود یعنی فقط یک سطر در دیتاگرید قرار می گیرد. بنظر شما چکار کنم که مقادیر قبلی دیتاگرید حفظ شود

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Collections;

namespace WindowsFormsApplication3
{
public partial class Form1 : Form
{
public class student
{
public string name { get; set; }
public int unit { get; set; }
public double scor { get; set; }


}
public Form1()
{
InitializeComponent();
}

private void Form1_Load(object sender, EventArgs e)
{

}

private void button1_Click(object sender, EventArgs e)
{
student obstudent=new student();

List<student> animallis=new List<student>();
obstudent.name = textBox1.Text;
obstudent.unit = int.Parse(textBox2.Text);
obstudent.scor = double.Parse(textBox3.Text);
animallis.Add(obstudent);
dataGridView1.DataSource = animallis;



}
}
}



میخواهم پس از این که تعدادی داده درون دیتاگرید قرارا گرفت که این داده ها شامل نام ، تعداد واحد و نمره هستش، سپس میانگین،کمترین و بیشترین نمره را هم در صورت نیاز نمایش دهم.
چون من از بانک اطلاعاتی استفاده نمی کنم میدونم باید از آرایه و لیست استفاده کنم و مقادیر رو به صورت موقت در حافظه ذخیره کنم که بتوانم در آخر عملیات مذکور شده میانگین،بیشترین و کمترین رو نشون بدهم.

نظر شما چیه ؟ آیا با استفاده از این تکه برنامه مفهوم آرایه، کلاس، و لیست رو به درستی متوجه شدم؟

headshoter
یک شنبه 27 بهمن 1392, 13:56 عصر
فکر میکنم به این خاطر هست شما animaliis و obstudent رو دارین هر دفعه new میکنید. یه بار توی فرم لود new کنید و بعدش توی رویداد کلیک بهشون مقدار بدید ، فکر کنم مشکلی نباشه.

mehdiba3
یک شنبه 27 بهمن 1392, 15:57 عصر
اصلاحش کردم ولی بازم مشکل حل نشد.این دفعه فقط یک بار مقدار میگیره و دیگه مقدار جدید رو ثبت هم نمی کنه.
کسی ایده ای به ذهنش نمیرسه؟


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Collections;

namespace WindowsFormsApplication3
{
public partial class Form1 : Form
{
public class student
{
public string name { get; set; }
public int unit { get; set; }
public double scor { get; set; }


}
student objstudent = new student();
List<student> studentlist = new List<student>();



public Form1()
{
InitializeComponent();
}

private void Form1_Load(object sender, EventArgs e)
{


}

private void button1_Click(object sender, EventArgs e)
{
objstudent.name = textBox1.Text;
objstudent.unit = int.Parse(textBox2.Text);
objstudent.scor = double.Parse(textBox3.Text);
studentlist.Add(objstudent);
dataGridView1.DataSource = studentlist;
}
}
}

mehdiba3
دوشنبه 28 بهمن 1392, 11:51 صبح
کسی نیست راهنماییم کنه؟

headshoter
دوشنبه 28 بهمن 1392, 14:49 عصر
private void button1_Click(object sender, EventArgs e)
{
studentlist.Add(new student() { name = textBox1.Text, unit = int.Parse(textBox2.Text), scor = double.Parse(textBox3.Text) });
dataGridView1.DataSource = null;
dataGridView1.DataSource = studentlist;

}

mehdiba3
سه شنبه 29 بهمن 1392, 20:17 عصر
private void button1_Click(object sender, EventArgs e)
{
studentlist.Add(new student() { name = textBox1.Text, unit = int.Parse(textBox2.Text), scor = double.Parse(textBox3.Text) });
dataGridView1.DataSource = null;
dataGridView1.DataSource = studentlist;

}

دوست عزیز شما تونستی جواب درست رو یادم بدی. ازت ممنونم فقط میشه خط datagirdview1.datasource=null رو توضیح بدید؟ این سبک برنامه که نوشتید برام زیاد قابل فهم نیست. ممنونم