PDA

View Full Version : سوال: ذخیره اطلاعات داخل دیتاگرید



davidrobert
دوشنبه 20 خرداد 1392, 19:51 عصر
من از این دستور برای ذخیره اطلاعات دیتاگرید داخل دیتابیس استفاده میکنم.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
DataAccess db = new DataAccess();
private DataTable dt = new DataTable();
private SqlConnection con = new SqlConnection();
private SqlDataAdapter da = new SqlDataAdapter();
public Form1()
{
InitializeComponent();
this.con.ConnectionString = @"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirector y|\Database1.mdf;Integrated Security=True;User Instance=True";
this.da.SelectCommand = new SqlCommand("select code,name,pay from Table1", this.con);
this.da.Fill(this.dt);
this.dataGridView1.DataSource = dt;

this.da.InsertCommand = new SqlCommand("Insert Into Table1(code,name,pay) Values (@code,@name,@pay)",this.con);
this.da.InsertCommand.Parameters.AddWithValue("@code", typeof(string)).SourceColumn = "code";
this.da.InsertCommand.Parameters.AddWithValue("@name", typeof(string)).SourceColumn = "name";
this.da.InsertCommand.Parameters.AddWithValue("@pay", typeof(string)).SourceColumn = "pay";
//this.dataGridView1.Name = "id";
//this.dataGridView1.Columns[0].Visible = false;
////this.dataGridView1.Name = "code";
//this.dataGridView1.Columns[1].HeaderText = "کد خدمات";
////this.dataGridView1.Name = "name";
//this.dataGridView1.Columns[2].HeaderText = "نام سرویس";
////this.dataGridView1.Name = "pay";
//this.dataGridView1.Columns[3].HeaderText = "هزینه";

}
private void Form1_Load(object sender, EventArgs e)
{
dataGridView1.Columns["code"].HeaderText = "کد کالا";
dataGridView1.Columns["name"].HeaderText = "نام کالا";
dataGridView1.Columns["pay"].HeaderText = "قیمت";
//dataGridView1.Columns["code"].HeaderText = "کد خدمات";
//da = new SqlDataAdapter("select * from Table1", con);
//ds = new DataSet();
//da.Fill(ds, "Table1");
//conn = new SqlCommandBuilder(da);
//dataGridView1.DataSource = ds;
//dataGridView1.DataMember = "Table1";
//dataGridView1.Columns["name"].AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMod ; e.Fill;
}

private void button1_Click(object sender, EventArgs e)
{
try
{
// ds = new DataSet();

//dataGridView1.DataMember = "Table1";
this.da.Update(dt);
}
catch (SqlException ex)
{
if (ex.Number == 2627)
MessageBox.Show("کد خدمات تکراری می باشد");
}
}
اطلاعات رو ذخیره میکنه ولی میخوام اطلاعات داخل دیتابیس رو نشان نده ولی تا اطلاعات داخل دیتا گرید رو نشان نده اطلاعات رو ذخیره نمیکنه و وقتی این دستور رو کامنت یا همون توزیع میگیریم
//this.da.SelectCommand = new SqlCommand("select code,name,pay from Table1", this.con);
//this.da.Fill(this.dt);
//this.dataGridView1.DataSource = dt;

مقدار دستور زیر رو ایراد میگیری
private void Form1_Load(object sender, EventArgs e)
{
dataGridView1.Columns["code"].HeaderText = "کد کالا";
dataGridView1.Columns["name"].HeaderText = "نام کالا";
dataGridView1.Columns["pay"].HeaderText = "قیمت";

میخوام بدان اینکه این دستورات رو ایراد بگیره
private void Form1_Load(object sender, EventArgs e)
{
dataGridView1.Columns["code"].HeaderText = "کد کالا";
dataGridView1.Columns["name"].HeaderText = "نام کالا";
dataGridView1.Columns["pay"].HeaderText = "قیمت";

اطلاعات رو ثبت کن و دیتاگرید رو خالی کنه برای اطلاعات جدید ممنون میشم به هم بگید چطور می توانم از اینکه اطلاعات رو ذخیره کنم و به این 2 تا دستور گیر نده و نخواد اطلاعات قبلی رو نشان بده و اطلاعات جدید رو هم ثبت کنی و وقت اطلاعات جدید رو ثبت کن و نشان نده.

davidrobert
دوشنبه 20 خرداد 1392, 20:50 عصر
خواهشن یکی بگی چطور می تونم این مشل حل کنم وقت اطلاعات ذخیره کنم و اطلاعات قبلی رو نشون ندم.

davidrobert
دوشنبه 20 خرداد 1392, 21:57 عصر
یکی جواب من رو بده گیر کردم خواهش میکنم جواب بدید به من

erfan_urchin
سه شنبه 21 خرداد 1392, 01:13 صبح
خب معلومه ایراد میگیره
وقتی شما اون قسمتو کامنت میکنی دیگه data table پر نمیشه و در نتیجه گرید ویو هم پر نمیشه و در نتیجه دیگه ستونی به اسم code توی گرید ویو وجود نداره که بخواد تبدیل بشه به "کد کالا" ، پس خطا میگیره و کاملا منطقیه
شما دقیقا میخوای چیکار کنی؟؟؟

amir200h
سه شنبه 21 خرداد 1392, 01:41 صبح
دوست من تا اطلاعات رو داخل دیتاگرید نریختین نباید header را تغییر بدین