PDA

View Full Version : update كردن dataset



nazaninebaba
یک شنبه 27 بهمن 1387, 10:13 صبح
با سلام خدمت دوستان

اين كدو من از اعلان برداشتم ولي تو برنامه خودم وقتي add كليك ميكنم اطلاعاتو دو بار در datagridviw نشون داده ميشه .و با هر بار كليك اين كار تكرار ميشه . به نظرم دليلش اينكه dataset بايد update بشه و اين كار بايد بين insert , loudall صورت بگيره اما چطوري ممنون ميشم شما دوستان كمكم كنيد.




using System.Data.SqlClient;
using System.Collections;
.
.
.
SqlConnection cnn = newSqlConnection();
SqlDataAdapter sda = newSqlDataAdapter();
SqlCommand cmd = newSqlCommand();
DataSet ds = newDataSet();
ArrayList arr = newArrayList();
privatevoid Connect()
{
cnn.ConnectionString = "Data Source=COMPUTER1;Initial Catalog=storDB ;Integrated Security=True;";
}
privateDataSet LoadAll()
{
Connect();
cmd.CommandText = "select * from Table";
cmd.Connection = cnn;
sda.SelectCommand = cmd;
cnn.Open();
sda.Fill(ds, "Barnamenevis");
cnn.Close();
return ds;
}
privatevoid Form1_Load(object sender, EventArgs e)
{
LoadAll();
dataGridView1.DataSource = ds;
dataGridView1.DataMember = "Barnamenevis";
}

privatevoid Insert(SqlCommand cmd)
{
Connect();
cmd.Connection = cnn;
cnn.Open();
cmd.ExecuteNonQuery();
cnn.Close();
}
privatevoid button1_Click(object sender, EventArgs e)
{

arr.Add(textBox1.Text);
arr.Add(textBox2.Text);
cmd.CommandText = "insert into Shelf(Field1,Field2)Values(@Field1,@Field2)";
cmd.Parameters.Clear();
cmd.Parameters.Add("@Field1", SqlDbType.NVarChar).Value = arr[0].ToString();
cmd.Parameters.Add("@Field2", SqlDbType.Int).Value =int.Parse ( arr[1].ToString());

Insert(cmd);
LoadAll();
dataGridView1.DataSource = ds;
dataGridView1.DataMember = "Barnamenevis";
}

rostamkhani
یک شنبه 27 بهمن 1387, 14:17 عصر
سلام
در تابع LoadAll از دستور زیر استفاده کنید


ds.Clear();

در ضمن یک بار مقدار دهی DataSource و DataMember در Form1_Load کافیست

nazaninebaba
سه شنبه 29 بهمن 1387, 22:21 عصر
با سلام
من درقسمت loud اولین خط dataseto خالی میکنم ولی بازم به مشکل برمیخورم این بار وقتی میخوام مقداری اضافه کنم مقدار جدیدو قبول نمیکنه و همون مقدار قبلو بر میداره در دفعه دوم. از نظر منطقی جاییی کهdataseto خالی میکنیم درسته ولی من واقعا موندم چرا خروجی درست جواب نمیده.
منون میشم کمک کنید

majid325
چهارشنبه 30 بهمن 1387, 12:05 عصر
اين متد Connect تو insert كارش چيه؟
نارنين بابا loud نه Load درسته....(اينو بخاطر اين گفتم چون چشمام داشت در مي اومد از بس دنبال تابع loud گشتم)
شما زماني كه از متد fill جهت بار گزاري اطلاعات استفاده ميكنيد نيازي نيست خودتون cnn رو open , close بكنيد.

nazaninebaba
پنج شنبه 01 اسفند 1387, 11:09 صبح
با سلام
دلیل استفاده connect در insert حتما باید به sql وصل بشه که بتونه insert انجام بده. به نظرم منطقیه

مشکل من تو این برنامه اینکه وقتی dataseto اپدیت نمیکنم اطلاعات چندین بار در datagrid نمایش داده میشه وقتی هم که dataseto خالی میکنم دفع اول بدون مشکل ذخیره میکنه و به درستی هم نمایش میده ولی برای باره دوم مقداره جدیدو نمیخونه و همون مقداره قبلی رو ذخیره میکنه.

majid325
جمعه 02 اسفند 1387, 05:25 صبح
با سلام
دلیل استفاده connect در insert حتما باید به sql وصل بشه که بتونه insert انجام بده. به نظرم منطقیه

به نظر شما بله منطقيه ، ولي به نظر من وقتي از cnn.Open استفاده ميكني يعني به sql ميخواي وصل بشي، شما به اون تابع نياز نداري. حالا ميشه بگين محتواي اون تابع چي هست؟

در ضمن در رابطه به مشكل اصلي تون هم به پست رستم خواني عزيز هم توجه كنيد.
اگر هم كارتون را نيفتاد نمونه برنامتون با بانكش رو ضميمه كنيد .