PDA

View Full Version : سوال: 2 بار احرای دستور Insert



yakooza2009
چهارشنبه 10 اسفند 1390, 13:17 عصر
سلام دوستان عزیز
من در داخل یک ئکمه کدی نوشتم که با استفاده از DS یک رکورد در جدول ایجاد میکنه
دستور مشکلی نداره رکورد ایجاد میشه ! ، ولی بعد از ثبت رکورد در مرورگر Ctrl + F5 و میزنم بازم آخرین رویداد اجرا میشه (یعنی ثبت رکورد)
برای جلوگیری از این کار باید چیکار کنم ؟ اصلا مشکل از کجاست ؟ Client call back ?

Alfred188
چهارشنبه 10 اسفند 1390, 13:56 عصر
سلام،
بعد از اینکه دستور رو اجرا کردی اطلاعات رو null می کنی؟ اگه نه حتما این کار رو انجام بده و یه شرط هم بزار که اگه مثلا فلان مقدار null نبود کار ذخیره انجام بشه و در غیر اینصورت کاری انجام نشه یا یه پیام بده
موفق باشی

yakooza2009
پنج شنبه 11 اسفند 1390, 02:01 صبح
برای یکی از فیلد ها منترل ورود اجباری گذاشتم از طریق کد هم اطلاعاتش و چک میکنم
ولی بارم نمیشه

pershengkurd
پنج شنبه 11 اسفند 1390, 02:40 صبح
بعد از دستور ذخیره تمام تکساتو خالی کن، یا چیزی شبیه این، مثلاً وقتی ذخیره انجام شد بره به یه صفحه دیگه
می تونی تمام خالی کردن تکساتو توی یه کلاس بزاری و فقط یه بار فراخونیش کنی

yakooza2009
پنج شنبه 11 اسفند 1390, 13:15 عصر
این کارا و انجام دادم ! اصلا مسئله سر این textbox خ ... نیست
آخرین رویداد دوباره اجرا میشه اگه صفحه refresh کنم !
مثلا رویداد delete

sara_aryanfar
پنج شنبه 11 اسفند 1390, 15:37 عصر
کدتون رو قرار بدید

اوبالیت به بو
جمعه 12 اسفند 1390, 13:01 عصر
فکر کنم در فرم لود کدی دارید که درون IsPostback قرار گرفته

yakooza2009
جمعه 12 اسفند 1390, 19:51 عصر
If TextBox1.Text.Trim.Length > 0 Then
Dim d As New DataSet1TableAdapters.t1TableAdapter
d.InsertQuery(TextBox1.Text)
SqlDataSource1.DataBind()
GridView1.DataBind()
TextBox1.Text = String.Empty
End If

yakooza2009
جمعه 12 اسفند 1390, 19:52 عصر
این کد و نوشتم
در فرم load هیچ کدی ندارم
لطفاً کمک کنید

A.S.Roma
جمعه 12 اسفند 1390, 23:13 عصر
ساده ترین راهش اینه که بعد از عملیات Insert یا Delete یا ... از طریق Response.Redirect یوزر رو به صفحه ی جاری منتقل کنی !
یک راه دیگه اش استفاده از Session هست که در صورت موجود بودن فلان Session این کار انجام بشه.
ظاهرا" منطقی ترین راه استفاده از PRG Pattern (http://en.wikipedia.org/wiki/Post/Redirect/Get) هست. ( من خیلی از جزئیاتش خبر ندارم . )
یک سری راه هم این جا پیشنهاد داده :
http://aspalliance.com/687_Preventing_Duplicate_Record_Insertion_on_Page_ Refresh.

mahisa18
دوشنبه 22 اسفند 1390, 11:47 صبح
سلام

من یه کد برای insert نوشتم ولی اجرا نمی شه

ممنون می شم بگین مشکلم از کجاست



void refresh()
{
ds.Clear();
da2.Fill(ds, "Student");
}

private void button1_Click(object sender, EventArgs e)
{
int row_index;
dv.Sort = "Code_student";
row_index = dv.Find(textBox1.Text.Trim());
newrow1 = ds.Tables["Student"].NewRow();
if (row_index == -1)
{

newrow1["Code_Student"] = Convert.ToInt16(textBox1.Text);
newrow1["Name"] = textBox9.Text;
newrow1["Family"] = textBox8.Text;
newrow1["Name_pedar"] = textBox7.Text;
newrow1["Tarikhe_tavallod"] = Convert.ToInt16(textBox6.Text);
newrow1["Code_melli"] = Convert.ToInt16(textBox4.Text);
newrow1["Code_dore"] = Convert.ToInt16(textBox2.Text);
newrow1["Phone"] = Convert.ToInt16(textBox3.Text);
newrow1["Address"] = textBox5.Text;

ds.Tables["Student"].Rows.Add(newrow1);

cb2 = new SqlCommandBuilder(da2);
da2 = cb2.DataAdapter;
da2.Update(ds, "Student");
refresh();
MessageBox.Show("save");

con.Close();
}
else
{
MessageBox.Show("repeat");
textBox1.Clear();
textBox1.Focus();
}

maxpayn2
دوشنبه 22 اسفند 1390, 12:35 عصر
باید یه متغیر از نوع Bool تعریف کنی و مقدارش رو true ست کنی و انتهای عملیات (بعد از خط 6 کد بالا) مقدارش رو false ست کنی و ابتدای عملیات (قبل از خط 1 کد بالا) چک کنی اگه مقدار true بود عملیات انجام بشه