نمایش نتایج 1 تا 27 از 27

نام تاپیک: مشکل اضافه شدن رکورد ولی نمایش ندادن در گرید

  1. #1
    کاربر دائمی
    تاریخ عضویت
    شهریور 1390
    محل زندگی
    کنار ساحل نیلگون خلیج همیشه فارس
    پست
    440

    مشکل اضافه شدن رکورد ولی نمایش ندادن در گرید

    با سلام

    مشکل : دوتا فرم دارم و یک گرید در فرم اول قرار داره . حالا با این کدها که پایین قرار دادم تو فرم اول اگه رکوردی رو اضافه کنم فورا رکورد اضافه شده برام تو گرید نمایش داده میشه ولی اگه با این کد تو فرم دوم رکورد رو اضافه کنم تو گرید که تو فرم اول قرار داره نمایش داده نمیشه مگر اینکه از برنامه خارج بشم !

    این متغیرها رو به صورت سراسری تو هر دوتا فرم تعریف کردم :
            OleDbConnection con = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;  Data Source=Database.mdb");
    OleDbDataAdapter da = new OleDbDataAdapter();
    DataTable dt = new DataTable();
    BindingSource bs = new BindingSource();
    OleDbCommand cmd = new OleDbCommand();


    این کد ها تو خاطیت لود فرم نوشتم :
                da = new OleDbDataAdapter("select * from phon", con);
    da.Fill(dt);
    bs.DataSource = dt;
    dataGridView1.DataSource = bs;


    این کدها هم برای اضافه کردن رکورد :
                con.Open();
    string s = "insert into Phon(F_name,L_name)values('"+textBox1.Text+"','"+t extBox2.Text+"')";
    OleDbCommand addq = new OleDbCommand(s,con);
    addq.ExecuteNonQuery();
    dt.Clear();
    da.Fill(dt);
    con.Close()


    به نظر شما مشکل از چیه؟

    با تشکر

  2. #2
    کاربر دائمی
    تاریخ عضویت
    تیر 1389
    محل زندگی
    به جبر روزگار تهران هستم.
    پست
    2,718

    نقل قول: مشکل اضافه شدن رکورد ولی نمایش ندادن در گرید

    سلام. ببینید رویداد FormLoad زمانیکه فرم اجرا میشه، یه عملی رو که ما بهش میگیم انجام میده. بنابراین زمانیکه فرم 1 و فرم 2 در حالت اجرا هستن شما با بستن فرم 2، نمیتونید از رویداد formload بصورت معمول استفاده کنید. یه راهش میتونه این باشه که در رویداد FormActivate مربوط به فرم1،کدهای مربوط به پر کردن گرید رو بزارید ( یعنی همون کدهایی که در فرم لود گذاشتید).

  3. #3
    کاربر دائمی
    تاریخ عضویت
    شهریور 1390
    محل زندگی
    کنار ساحل نیلگون خلیج همیشه فارس
    پست
    440

    نقل قول: مشکل اضافه شدن رکورد ولی نمایش ندادن در گرید

    داش من این کار رو انجام دادم ولی مشکل از جای دیگه است !

    شما خودتون این کدها رو تست کنید ببینین مشکل از چیه !

  4. #4
    کاربر دائمی
    تاریخ عضویت
    شهریور 1390
    محل زندگی
    کنار ساحل نیلگون خلیج همیشه فارس
    پست
    440

    نقل قول: مشکل اضافه شدن رکورد ولی نمایش ندادن در گرید

    دوستان کسی نیست راهنمایی کنه ! ما تو سی شارپ تازه کار هستیم !

  5. #5
    کاربر دائمی
    تاریخ عضویت
    دی 1383
    محل زندگی
    اصفهان
    پست
    1,436

    نقل قول: مشکل اضافه شدن رکورد ولی نمایش ندادن در گرید

    کدوم قسمت از کد رو توی فرم دوم مینویسین؟ اگه این قسمت رو توی فرم دوم مینویسی:



    con.Open();
    string s = "insert into Phon(F_name,L_name)values('"+textBox1.Text+"','"+t extBox2.Text+"')";
    OleDbCommand addq = new OleDbCommand(s,con);
    addq.ExecuteNonQuery();
    dt.Clear();
    da.Fill(dt);
    con.Close()

    و بقیه رو تو لود فرم اول، متغییر dt توی کدوم فرم ایجاد شده و چطوری توی هر فرم بهش دسترسی پیدا میکنید؟

  6. #6
    کاربر دائمی
    تاریخ عضویت
    شهریور 1390
    محل زندگی
    کنار ساحل نیلگون خلیج همیشه فارس
    پست
    440

    نقل قول: مشکل اضافه شدن رکورد ولی نمایش ندادن در گرید

    دوست عزیز من کدهای قسمت اول و قسمت دوم پست 1 رو تو هر دو فرم تعریف کردم یعنی dt هم تو فرم اول ایجاد میشه و هم تو فرم دوم .

    مشکل من اینه که وقتی از طریق فرم دوم می خوام رکوردی رو اضافه کنم تو فرم اول به گرید اضافه نمیشه ! ولی اگه با همون کد تو فرم اول رکوردی رو اضافه کنم فورا برام تو گرید نمایش داده میشه !

    ممنونم از اینکه به سوالم توجه کردی

  7. #7
    کاربر دائمی
    تاریخ عضویت
    دی 1383
    محل زندگی
    اصفهان
    پست
    1,436

    نقل قول: مشکل اضافه شدن رکورد ولی نمایش ندادن در گرید

    خوب دیتاگریدویو نمیتونه همزمان به دو تا DataTable متصل باشه که...با کاری که شما میکنی حتما دیتاگریدویو به DataTable توی فرم اول Bind شده بعد شما توی فرم دوم DataTable فرم دوم رو ویرایش میکنی که هیچ تاثیری روی اولی نمیذاره.بعدم، شما توی فرم دوم چطوری به DataGridView توی فرم اول دسترسی پیدا میکنید تا بتونید بخش دوم کدتون رو بنویسید؟

  8. #8
    کاربر دائمی
    تاریخ عضویت
    شهریور 1390
    محل زندگی
    کنار ساحل نیلگون خلیج همیشه فارس
    پست
    440

    نقل قول: مشکل اضافه شدن رکورد ولی نمایش ندادن در گرید

    دوست عزیز من خیلی وقت نیست سی شارپ رو شروع کردم قبلا با دلفی برنامه می نوشتم . چون تا حالا سی شارپ کار نکردم زیاد تو سی شارپ وارد نیستم فقط می دونم بانک اطلاعاتی تو دلفی و سی شارپ خیلی متفاوته !

    خب بگذریم ! حالا من باید چکار کنم برای اینکار !
    اگه میشه نمونه کد بزارید .


    با تشکر

  9. #9
    کاربر دائمی
    تاریخ عضویت
    دی 1383
    محل زندگی
    اصفهان
    پست
    1,436

    نقل قول: مشکل اضافه شدن رکورد ولی نمایش ندادن در گرید

    خوب میشه توضیح بدین دقیقا میخواین چیکار کنید تا ببینم میتونم کمکتون کنم؟

  10. #10

    نقل قول: مشکل اضافه شدن رکورد ولی نمایش ندادن در گرید

    سلام

    وقتی که فرم دومت نمایش داده میشه کد های فوق را بعد از نمایش فرمت بذار


    da = new OleDbDataAdapter("select * from phon", con);
    da.Fill(dt);
    bs.DataSource = dt;
    dataGridView1.DataSource = bs;




    به این مثال توجه کن

    Form2 frm2 = new Form2();
    frm2.ShowDialog();
    da = new OleDbDataAdapter("select * from phon", con);
    da.Fill(dt);
    bs.DataSource = dt;
    dataGridView1.DataSource = bs;



    حتما تست کن ببین نتیجه چه میشه

  11. #11
    کاربر دائمی
    تاریخ عضویت
    شهریور 1390
    محل زندگی
    کنار ساحل نیلگون خلیج همیشه فارس
    پست
    440

    نقل قول: مشکل اضافه شدن رکورد ولی نمایش ندادن در گرید

    دوست من بازهم نمایش داده نمیشه!

    اگه میشه یک نمونه مثال بزار

  12. #12

    نقل قول: مشکل اضافه شدن رکورد ولی نمایش ندادن در گرید

    شما یه نمونه از این کد ها رو که نوشتید و مشکل داره رو بذار تا دوستان براتون اصلاح کنن

  13. #13
    کاربر دائمی
    تاریخ عضویت
    شهریور 1390
    محل زندگی
    کنار ساحل نیلگون خلیج همیشه فارس
    پست
    440

    نقل قول: مشکل اضافه شدن رکورد ولی نمایش ندادن در گرید

    این هم نمونه کد :

    TellBook.rar

    تو برنامه دو تا فرم دارم گه گرید تو فرم اول قرار داره .

  14. #14
    کاربر دائمی
    تاریخ عضویت
    تیر 1389
    محل زندگی
    به جبر روزگار تهران هستم.
    پست
    2,718

    نقل قول: مشکل اضافه شدن رکورد ولی نمایش ندادن در گرید

    یه روش رو قدم به قدم توضیح میدم. امیدوارم مشکلتون حل بشه. این روش به این صورت هست که در فرم1 گریدویو وجود داره و در فرم2 هم اشخاص اضافه میشن. به محض اضافه شدن یک شخص، میتونید اونو در فرم1 مشاهده کنید ( بدون اینکه حتی فرم2 رو ببندید).در این مثال، من گرید مربوط به فرم 1 رو Grduser در نظر گرفتم. مراحل کار بصورت زیر هست:
    1. در فرم2( فرمی که اشخاص رو اضافه می کنید) و در بخش partial class یک گرید رو بصورت عمومی و به شکل زیر تعریف کنید:
    DataGridView grdnewuser = new DataGridView();

    روی کلمه grdnewuser ، راست کلیک کنید و از گزینه Refactor ، گزینه Encapsulate Field رو انتخاب کنید.در پنجره باز شده کلید Ok رو بزنید. با انجام این کارها، بصورت اتوماتیک یه تابع get و set در زیر همین خط ایجاد میشه ( اصلا با این مورد هیچ کاری نداشته باشید و خودتون رو درگیر اون نکنید).
    2. در فرم 1 و اون جایی که فرم2 رو صدا میزنید ( یعنی همون جایی که فرم2 رو new و show می کنید) یک خط کد باید اضافه کنید، ابتدا فرض کنید که فرم 2 رو بصورت زیر صدا بزنیم:
    Form2 FrmNewUser = new Form2();
    FrmNewUser.ShowDialog();

    حالا قبل از show کردن کد زیر رو اضافه کنید :
    FrmNewUser.Grdnewuser = Grduser;

    یعنی در نهایت باید کد زیر رو داشته باشید :
    Form2 FrmNewUser = new Form2();
    FrmNewUser.Grdnewuser = Grduser;
    FrmNewUser.ShowDialog();

    حالا درون دکمه اضافه کردن کاربر (که در فرم 2 قرار داره) و در انتهای کدهای اضافه کردن ، این کدها رو اضافه کنید :
    da = new OleDbDataAdapter("select * from phon", con);
    DataTable dt = new DataTable();
    da.Fill(dt);
    Grdnewuser.DataSource = dt;

    روش تست شده است و هیچ مشکلی نداره.
    موفق باشید.
    آخرین ویرایش به وسیله veniz2008 : یک شنبه 05 آذر 1391 در 08:17 صبح

  15. #15
    کاربر دائمی
    تاریخ عضویت
    شهریور 1390
    محل زندگی
    کنار ساحل نیلگون خلیج همیشه فارس
    پست
    440

    نقل قول: مشکل اضافه شدن رکورد ولی نمایش ندادن در گرید

    من این کار رو انجام دادم بازهم نشد . برنامه رو اینجا گذاشتم شما یه نگاهی بهش بندازید .

    تو فرم اول یک Button قرار داره که میشه فرم دوم را نمایش داد .
    TellBook.rar

  16. #16
    کاربر دائمی
    تاریخ عضویت
    تیر 1389
    محل زندگی
    به جبر روزگار تهران هستم.
    پست
    2,718

    نقل قول: مشکل اضافه شدن رکورد ولی نمایش ندادن در گرید

    مشکلی که برای شما پیش اومده اینه gridphon رو موقع تعریف کردن با G (بزرگ) شروع کردید. در این حالت یه سردرگمی پیش میاد چون خود ویژوال استودیو به جای Gridphon، متد Gridphon1 رو میسازه.(البته باید این نکته رو در پست قبلی توضیح میدادم که متاسفانه فراموش کردم، مشکل از من بود).
    برای حل مشکل دو راه دارید : 1. یه بار از نو مراحل رو انجام بدید. فقط حروف رو بصورت کوچک بنویسید و بعد refactor و سایر مراحلی که گفتم ( پیشنهاد میکنم از همین راه استفاده کنید)
    2. در فرم2 و اونجایی که کدها رو بعد از اضافه کردن نوشتید عدد 1 رو از Gridphon بردارید یعنی :
    Gridphon.DataSource = dt; 

    راستی بعد از اضافه کردن،خالی کردن دیتاتیبل و پر کردن آداپتور واسه چیه؟؟؟.
    اینطور بنویسید دوست من :
    string s = "insert into Phon(F_name,L_name)values('" + textBox1.Text + "','" + textBox2.Text + "')";
    OleDbCommand addq = new OleDbCommand(s, con);
    con.Open();
    addq.ExecuteNonQuery();
    con.Close();
    // fill grid after insert data
    da = new OleDbDataAdapter("select * from phon", con);
    dt = new DataTable();
    da.Fill(dt);
    Gridphon.DataSource = dt;

  17. #17
    کاربر دائمی
    تاریخ عضویت
    شهریور 1390
    محل زندگی
    کنار ساحل نیلگون خلیج همیشه فارس
    پست
    440

    نقل قول: مشکل اضافه شدن رکورد ولی نمایش ندادن در گرید

    دوست عزیز من این کار رو انجام دادم الان برنامه هیج خطایی هم نمیده !
    فقط نمیدونم چرا وقتی تو فرم دوم رکوردی رو اضافه می کنم چرا تو گرید که تو فرم اول قرار داره اضافه نمیشه !

  18. #18
    کاربر دائمی
    تاریخ عضویت
    تیر 1389
    محل زندگی
    به جبر روزگار تهران هستم.
    پست
    2,718

    نقل قول: مشکل اضافه شدن رکورد ولی نمایش ندادن در گرید

    در فرم2 یه جایی هست که فرم رو میبندید ( this.close )، اونو بردارید و برنامه رو یه بار دیگه تست کنید.
    از کدوم روش استفاده کردید؟( یه بار از نو انجام دادید یا همون قبلی رو دستکاری کردید؟)

  19. #19
    کاربر دائمی
    تاریخ عضویت
    شهریور 1390
    محل زندگی
    کنار ساحل نیلگون خلیج همیشه فارس
    پست
    440

    نقل قول: مشکل اضافه شدن رکورد ولی نمایش ندادن در گرید

    دستور Close رو هم پاک کردم ! حالا وقتی رو دکمه اضافه کلیک می کنم رکورد اضافه میشه ولی اگه از فرم دوم خارج بشم(با دکمه Close فرم) رکوردهای اضافه شده تو گرید نمایش داده نمیشه ! یعنی تا زمانی که تو فرم دوم هستم فقط تو گرید فرم اول رکوردهای اضافه شده نمایش داده میشه !

    روش : یک بار از نو این روش رو انجام دادم .

    مشکل چیه !

  20. #20
    کاربر دائمی
    تاریخ عضویت
    دی 1383
    محل زندگی
    اصفهان
    پست
    1,436

    نقل قول: مشکل اضافه شدن رکورد ولی نمایش ندادن در گرید

    دسترسی به DataGridView ی مربوط به یک فرم، از یک فرم دیگه کلا کار درستی نیست.شما اگه توضیح میدادی دقیقا چکار میخوای بکنی روش بهتری میشد پیدا کرد که درگیر این مشکلات نشی.

  21. #21
    کاربر دائمی
    تاریخ عضویت
    شهریور 1390
    محل زندگی
    کنار ساحل نیلگون خلیج همیشه فارس
    پست
    440

    نقل قول: مشکل اضافه شدن رکورد ولی نمایش ندادن در گرید

    خب دوست عزیز حالا من از صفر براتون توضیح میدم :

    من دوتا فرم دارم : فرم 1 و فرم 2 . تو فرم اول یک گرید گذاشتم که میخوام از طریق فرم دوم رکورد رو به دیتابیس اضافه کنم و در گرید که در فرم اول قرار داره رکورد اضافه شده به دیتابیس برام نمایش داده بشه !

    حالا مشکل من اینه که : با کدهایی که در پست یک قرار دادم می تونم در فرم اول اضافه کنم و فورا رکورد اضافه شده برام تو گرید نمایش داده بشه ولی با این کدها که از فرم دوم رکورد رو اضافه می کنم تو فرم اول داخل گرید نمایش داده نمیشه !

    دوستان اگه کسی روش بهینه ا بلده راهنمایی کنه

  22. #22
    کاربر دائمی
    تاریخ عضویت
    دی 1383
    محل زندگی
    اصفهان
    پست
    1,436

    نقل قول: مشکل اضافه شدن رکورد ولی نمایش ندادن در گرید

    توی فرم یک به صورت private اینا رو تعریف کنید:

    BindingSource bindingSource = new BindingSource();

    توی Load فرم اول، اطلاعات رو لود کنید و نمایش بدین:

    OleDbConnection con = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=Database.mdb");
    OleDbDataAdapter da = new OleDbDataAdapter("select * from phon", con);
    DataTable dt = new DataTable();
    da.Fill(dt);
    bindingSource.DataSource = dt;
    dataGridView1.DataSource = bindingSource;

    توی فرم دوم این مشخصه رو اضافه کنید:

    public BindingSource BindingSource
    {
    get;
    set;
    }

    توی دکمه Add در فرم دوم، اول داده رو درج کنید:

    OleDbConnection con = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=Database.mdb");
    con.Open();
    string s = "insert into Phon(F_name,L_name)values('"+textBox1.Text+"','"+t extBox2.Text+"')";
    OleDbCommand addq = new OleDbCommand(s,con);
    addq.ExecuteNonQuery();

    و DataSource مربوط به BindingSource رو آپدیت کنید( ادامه کد قبل):

    OleDbDataAdapter da = new OleDbDataAdapter("select * from phon", con);
    DataTable dt = new DataTable();
    da.Fill(dt);
    BindingSource.DataSource = dt;
    con.Close()

    و توی فرم 1 جایی که قرار فرم 2 نمایش داده بشه:

    Form2 form2 = new Form2();
    form2.BindingSource = bindingSource;
    form2.Show();


    البته از اونجایی که شما فرم 2 رو در حالت ShowDialog نمایش نمیدی و میخوای هم زمان با اضافه شدن رکورد در فرم 2، فرم 1 هم آپدیت بشه، این کد بعد از هر بار اضافه کردن رکورد یک Select میزنه تا لیست رو در بیاره که روش چندان جالبی نیست.ولی همین اگر کار کرد بگو میشه بهترش کرد.

  23. #23
    کاربر دائمی
    تاریخ عضویت
    شهریور 1390
    محل زندگی
    کنار ساحل نیلگون خلیج همیشه فارس
    پست
    440

    نقل قول: مشکل اضافه شدن رکورد ولی نمایش ندادن در گرید

    دوست عزیز ! کلافه شدم ! از هر روشی می رم جواب نمی گیرم !
    من این نمونه کد رو می زارم شما به یک روش و یا هر روشی که بهینه تره کاری کنید که از طریق فرم اول بتونم رکورد اضافه شده در فرم دوم رو در گرید برام نمایش داده بشه !
    WindowsFormsApplication1.rar

    با تشکر

  24. #24
    کاربر دائمی
    تاریخ عضویت
    دی 1383
    محل زندگی
    اصفهان
    پست
    1,436

    نقل قول: مشکل اضافه شدن رکورد ولی نمایش ندادن در گرید

    دوست عزیز شما این متغیر رو باید 1 بار در خود کلاس فرم باید تعریف میکردین :

    BindingSource bindingSource = new BindingSource();

    یعنی به این صورت:

    public partial class Form1 : Form
    {
    BindingSource bindingSource = new BindingSource();

    ولی اشتباها هم توی "لود فرم" تعریفش کردین هم توی رویداد مربوط به دکمه.اون 2 تا خط رو حذف کنید. من تست کردم دست شد.
    فایل های ضمیمه فایل های ضمیمه

  25. #25
    کاربر دائمی
    تاریخ عضویت
    شهریور 1390
    محل زندگی
    کنار ساحل نیلگون خلیج همیشه فارس
    پست
    440

    نقل قول: مشکل اضافه شدن رکورد ولی نمایش ندادن در گرید

    دوست عزیز تست کردم جواب داد . دست گلت هم درد نکنه .چون از بس تست کرده بودم و جواب نمی گرفتم دیگه کلافه شده بودم خودم هم نمی دونستم چکار می کردم .

    با تشکر
    موفق و پیروز باشید

  26. #26
    کاربر دائمی
    تاریخ عضویت
    شهریور 1390
    محل زندگی
    کنار ساحل نیلگون خلیج همیشه فارس
    پست
    440

    نقل قول: مشکل اضافه شدن رکورد ولی نمایش ندادن در گرید

    دوست عزیز کار متد get و set چیه ؟

    مختصر توضیح بدید .

  27. #27
    کاربر دائمی
    تاریخ عضویت
    دی 1383
    محل زندگی
    اصفهان
    پست
    1,436

    نقل قول: مشکل اضافه شدن رکورد ولی نمایش ندادن در گرید

    نقل قول نوشته شده توسط Fastdesign مشاهده تاپیک
    دوست عزیز کار متد get و set چیه ؟

    مختصر توضیح بدید .

    public BindingSource BindingSource
    {
    get;
    set;
    }

    یه Property (مشخصه) از نوع BindingSource تعیین میکنه. Property ها معمولا واسه "دستیابی به فیلد های کلاس به صورت غیر مستقیم" بکار میرن.هر Property میتونه گرفته بشه (get) و یا بهش مقدار داده بشه(set).
    البته این روش، یه روش خاص از تعریف Property هست که مقدارش رو خودش نگه میداره.در حالت عادی مقدار باید جای دیگه توی کلاس باشه:

    public class SampleClass
    {
    private string name;
    ..
    ..
    public string Name
    {
    get { return name; }
    set { name = value; }
    }
    }

تاپیک های مشابه

  1. سوال: پیغام در صورت اضافه شدن رکورد
    نوشته شده توسط iemt_hhk در بخش Access
    پاسخ: 2
    آخرین پست: شنبه 10 اسفند 1387, 10:15 صبح
  2. جا به جا شدن رکوردها با اضافه شدن رکورد جدید
    نوشته شده توسط shahab_ksh در بخش SQL Server
    پاسخ: 6
    آخرین پست: سه شنبه 02 مهر 1387, 15:00 عصر
  3. اضافه شدن رکورد جدید در انتهای DBgrid ...
    نوشته شده توسط alireza_63 در بخش برنامه نویسی در Delphi
    پاسخ: 4
    آخرین پست: سه شنبه 07 فروردین 1386, 14:09 عصر
  4. جلوگیری از اضافه شدن رکورد اضافی
    نوشته شده توسط Asad.Safari در بخش برنامه نویسی با زبان C و ++C
    پاسخ: 7
    آخرین پست: دوشنبه 15 خرداد 1385, 16:10 عصر
  5. پیغام هشدار هنگام اضافه شدن رکورد به بانک
    نوشته شده توسط mino در بخش Classic ASP
    پاسخ: 5
    آخرین پست: یک شنبه 22 شهریور 1383, 01:03 صبح

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •