PDA

View Full Version : سوال: مشکل در نشان دادن اطلاعات در دیتاگریدویو



peymanjon
چهارشنبه 15 اردیبهشت 1389, 19:33 عصر
سلام.
من از این کدها در load form استفاده میکنم تا وقتی اطلاعاتی وارد شد در این دیتا گریدویو بعد از درج ،اطلاعات جدید را نشان دهد . وقتی برنامه برای بار اول load میشود اطلاعات بصورت صحیح نشان داده میشود ولی بعد از insert کردن یک اطلاعات جدید، توی دیتا گرید ویو اطلاعات جدید به همراه اطلاعات قدیم بعلاوه اطلاعات قدیم که بصورت تکراری میباشد ، در دیتا گرید ویو نشان داده میشود . وقتی دیتابیس را نگاه میکنم همه چیز درست میباشد و فقط اطلاعات جدید ثبت شده است.
من کدهای form load (نشان دادن اطلاعات در دیتا گریدویو)که فکر میکنم مشکل در همینجا باشه و کد قسمت insert را میذارم تا دوستان کمکم کنن.
ممنون

formload

SqlConnection objconn = new SqlConnection("Data Source=.;Initial Catalog=RfidDB;Integrated Security=True");
dataadapter.SelectCommand = new SqlCommand();
dataadapter.SelectCommand.Connection = objconn;

dataadapter.SelectCommand.CommandText = "SELECT TagId,[First Name],LastName,Title,TitleOfCourtesy,Photo,Country,City ,Address,BirthDate,HireDate,Region,Postalcode,Home phone,EmployeeID FROM RFIDdb";
dataadapter.FillSchema(objset, SchemaType.Source, "RFIDdb1");
dataadapter.Fill(objset, "RFIDdb1");
dataGridView1.AutoGenerateColumns = true;
dataGridView1.DataSource = objset;
dataGridView1.DataMember = "RFIDdb1";
dataGridView1.Columns[0].HeaderText = "کد";
dataGridView1.Columns[1].HeaderText = "نام ";
dataGridView1.Columns[2].HeaderText = "نام خانوادگی";
dataGridView1.Columns[3].HeaderText = "سمت";
dataGridView1.Columns[4].HeaderText = "اداره مربوط";
dataGridView1.Columns[5].HeaderText = "عکس";
dataGridView1.Columns[6].HeaderText = "کشور";
dataGridView1.Columns[7].HeaderText = "شهر";
dataGridView1.Columns[8].HeaderText = "آدرس";
dataGridView1.Columns[9].HeaderText = "تاریخ تولد";
dataGridView1.Columns[10].HeaderText = "تاریخ استخدام";
dataGridView1.Columns[11].HeaderText = "مذهب";
dataGridView1.Columns[12].HeaderText = "کدپستی";
dataGridView1.Columns[13].HeaderText = "شماره تلفن";

dataGridView1.Columns[14].HeaderText = " ";
dataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
dataGridView1.MultiSelect = false;
dataGridView1.EditMode = DataGridViewEditMode.EditProgrammatically;


insert


dataadapter.InsertCommand = new SqlCommand();
dataadapter.InsertCommand.Connection = objconn;
dataadapter.InsertCommand.CommandText = "INSERT INTO RFIDdb" + "(LastName,[First Name],Title,TitleOfCourtesy,BirthDate,HireDate,Address, City,Region,Postalcode,Country,Homephone,Notes,Tag Id,Photo)" +
"VALUES(@LastName,@FirstName,@Title,@TitleOfCourtes y,@BirthDate,@HireDate,@Address,@City,@Region,@Pos talcode,@Country,@Homephone,@Notes,@TagId,@Photo)";
dataadapter.InsertCommand.Parameters.AddWithValue("@LastName", textBox3.Text);
dataadapter.InsertCommand.Parameters.AddWithValue("@FirstName", textBox2.Text);
dataadapter.InsertCommand.Parameters.AddWithValue("@Title", textBox4.Text);
dataadapter.InsertCommand.Parameters.AddWithValue("@TitleOfCourtesy", textBox5.Text);
dataadapter.InsertCommand.Parameters.AddWithValue("@BirthDate", dtF);
dataadapter.InsertCommand.Parameters.AddWithValue("@HireDate", dtF1);
dataadapter.InsertCommand.Parameters.AddWithValue("@Address", textBox14.Text);
dataadapter.InsertCommand.Parameters.AddWithValue("@City", textBox11.Text);
dataadapter.InsertCommand.Parameters.AddWithValue("@Region", textBox15.Text);
dataadapter.InsertCommand.Parameters.AddWithValue("@Postalcode",textBox17.Text);
dataadapter.InsertCommand.Parameters.AddWithValue("@Country", textBox14.Text);
dataadapter.InsertCommand.Parameters.AddWithValue("@Homephone", textBox13.Text);
dataadapter.InsertCommand.Parameters.AddWithValue("@Notes", textBox18.Text);
dataadapter.InsertCommand.Parameters.AddWithValue("@TagId", textBox19.Text);
System.IO.FileStream fs = new System.IO.FileStream(filename, System.IO.FileMode.Open);
byte[] imagecontent = new byte[fs.Length];
fs.Read(imagecontent, 0, (int)fs.Length);
SqlParameter ping = new SqlParameter("@Photo", imagecontent);
ping.SqlDbType = SqlDbType.Image;
dataadapter.InsertCommand.Parameters.Add(ping);
objconn.Open();
dataadapter.InsertCommand.ExecuteNonQuery();
objconn.Close();

Form1_Load(sender, e);
MessageBox.Show("اطلاعات با موفقیت وارد شد");

مهدی رحیم زاده
چهارشنبه 15 اردیبهشت 1389, 21:23 عصر
دوست عزیز
قبل از پر کردن گریدویو با داده های جدید اول اون رو خالی کنید تا داده های قدیمی رو دیگه نمایش نده.
موفق باشید

peymanjon
پنج شنبه 16 اردیبهشت 1389, 17:45 عصر
من از این کد برای خالی کردن دیتا گرید استفاده کردم ولی الان دیگه اطلاعات جدید را نشان نمیدهد.مشکل چیه؟


dataGridView1.Rows.Clear();

peymanjon
جمعه 17 اردیبهشت 1389, 01:28 صبح
دوست عزیز
قبل از پر کردن گریدویو با داده های جدید اول اون رو خالی کنید تا داده های قدیمی رو دیگه نمایش نده.
موفق باشید
من از این کد برای خالی کردن دیتا گرید استفاده کردم ولی الان دیگه اطلاعات جدید را نشان نمیدهد.مشکل چیه؟


dataGridView1.Rows.Clear();

مهدی رحیم زاده
جمعه 17 اردیبهشت 1389, 08:44 صبح
دوست من شما کجا از این کد استفاده کردین؟
یک بررسی کوچولو انجام بدین شاید شما بعد از پر کردن داده ها دارین اونو خالی می کنین.

peymanjon
جمعه 17 اردیبهشت 1389, 10:59 صبح
dataGridView1.Rows.Clear();
SqlConnection objconn = new SqlConnection("Data Source=.;Initial Catalog=RfidDB;Integrated Security=True");
dataadapter.SelectCommand = new SqlCommand();
dataadapter.SelectCommand.Connection = objconn;

dataadapter.SelectCommand.CommandText = "SELECT TagId,[First Name],LastName,Title,TitleOfCourtesy,Photo,Country,City ,Address,BirthDate,HireDate,Region,Postalcode,Home phone,EmployeeID FROM RFIDdb";
dataadapter.FillSchema(objset, SchemaType.Source, "RFIDdb1");
dataadapter.Fill(objset, "RFIDdb1");
dataGridView1.AutoGenerateColumns = true;
dataGridView1.DataSource = objset;
dataGridView1.DataMember = "RFIDdb1";
dataGridView1.Columns[0].HeaderText = "کد";
dataGridView1.Columns[1].HeaderText = "نام ";
dataGridView1.Columns[2].HeaderText = "نام خانوادگی";
dataGridView1.Columns[3].HeaderText = "سمت";
dataGridView1.Columns[4].HeaderText = "اداره مربوط";
dataGridView1.Columns[5].HeaderText = "عکس";
dataGridView1.Columns[6].HeaderText = "کشور";
dataGridView1.Columns[7].HeaderText = "شهر";
dataGridView1.Columns[8].HeaderText = "آدرس";
dataGridView1.Columns[9].HeaderText = "تاریخ تولد";
dataGridView1.Columns[10].HeaderText = "تاریخ استخدام";
dataGridView1.Columns[11].HeaderText = "مذهب";
dataGridView1.Columns[12].HeaderText = "کدپستی";
dataGridView1.Columns[13].HeaderText = "شماره تلفن";

dataGridView1.Columns[14].HeaderText = " ";
dataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
dataGridView1.MultiSelect = false;
dataGridView1.EditMode = DataGridViewEditMode.EditProgrammatically;

من اول form load این کد را نوشتم که اول دیتا گرید را خالی کنه و بعد دوباره با اطلاعات جدید پر و نشون داده بشود.

peymanjon
شنبه 18 اردیبهشت 1389, 01:22 صبح
درست انجام دادم؟

mortezamhd
شنبه 18 اردیبهشت 1389, 02:13 صبح
سلام
اگر درست متوجه شده باشم شما باید :

objSet = new DataSet();
آخه اینطور که من میبینم مشکل از همین دیتاست هست و ارتباطی با دیتاگرید نداره چون اطلاعات رواز ست میگیره

موفق باشید

peymanjon
یک شنبه 19 اردیبهشت 1389, 19:00 عصر
سلام
اگر درست متوجه شده باشم شما باید :
کد:
objSet = new DataSet();
آخه اینطور که من میبینم مشکل از همین دیتاست هست و ارتباطی با دیتاگرید نداره چون اطلاعات رواز ست میگیره

موفق باشید
دقیقا درست گفتید.ممنون