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

نام تاپیک: ویرایش ی datagrid و ذخیره ی آن در database

  1. #1

    ویرایش ی datagrid و ذخیره ی آن در database

    سلام دوستان.من قبل از پرسیدن سوالمdatagrid رو search کردم و تمام سوال جواب ها رو خوندم و علی رغم تکراری بودن اکثر سوال ها و جواب ها, جوابمو نگرفتم.
    من می خوام وقتی محتویات یه table در datagrid نمایش داده می شه , همون جا تو datagrid تغیییرات رو در فیلدها اعمال کنم و با زدن یک دکمه ی ذخیره این تغییرات در جدولم در database , ذخیره بشه.و برام مهمه که این تغییرات در خود datagrid صورت بگیره و نه از طریق چند تا textbox .ممنون می شم راهنماییم کنید.با کد البته.
    متشکرم.

  2. #2
    کاربر دائمی آواتار SMRAH1
    تاریخ عضویت
    مرداد 1386
    محل زندگی
    مشهد
    پست
    884

    نقل قول: ویرایش ی datagrid و ذخیره ی آن در database

    اگر datagrid به dataset متصل یا bind شده باشه به محض تغییر در datagrid در dataset اعمال میشه.توجه کن که برای ثبت این تغییرات در پایگاه داده باید ،اون را توسط dataset بروز کنی.

    موفق باشی

  3. #3
    کاربر دائمی
    تاریخ عضویت
    فروردین 1387
    محل زندگی
    دیار کریمان
    پست
    1,008

    نقل قول: ویرایش ی datagrid و ذخیره ی آن در database

    سلام

    با انجام تغییرات در دیتاگرید و بعد از اون توسط دیتاست و ثبت در پایگاه داده
    سوال به وجود می آد
    با توجه به کد زیر(لز نمونه برنامه های موجود در بخش)
        SqlDataAdapter dt;
    DataSet ds;
    dt.Update(ds, "table1");
    یک سوال
    مثلا فرض کنید داخل دیتا ست 500 رکورد هست بعد ریخته شده داخل دیتاگرید
    و تنها در یک رکورد تغییری ایجاد شود
    آیا تنها همین تغییر اعمال می شود (یعنی برنامه خودش متوجه میشه کدوم رکورد رو باید تغییر بده)
    و یا تمام رکوردها UPDATE میشوند

    منظور مقدار زمان و حافظه مصرفی برابر با تمام رکوردهاست و یا تنها همون رکورد تغییر یافته

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


    با تشکر

  4. #4
    کاربر دائمی
    تاریخ عضویت
    فروردین 1387
    محل زندگی
    دیار کریمان
    پست
    1,008

    نقل قول: ویرایش ی datagrid و ذخیره ی آن در database

    سلام

    شاید سوال مبهم شده
    جور دیگه مطرح می کنم

    فرض کنید یه دیتاست داریم با 500 رکورد و یه دیتاست دیگه با 5 تا رکورد حال داخل هر دو اینها یک رکورد رو تغییر داده
    و سپس اون دیتا ست رو آپدیت می کنیم(با دستور فوق)

    آیا از لحاظ استفاده از منابع حافظه و زمان با توجه با اینکه دیتابیس هم، روی سرور قرار داره تفاوتی وجود داره؟؟؟


    با تشکر

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

    نقل قول: ویرایش ی datagrid و ذخیره ی آن در database

    سلام

    برای انجام تغییرات در دیتاگرید و ثبت اونا در بانک داده به وسیله دیتاست

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

    یک دیتاست تعریف کرده و دیتاست دریافتی از کلاس رو به اون نسبت دادم
      void delete(int row)
    {

    DataSet dataSet = new DataSet();
    dataSet = get_dataset;

    SqlDataAdapter da = new SqlDataAdapter();
    SqlCommandBuilder cb = new SqlCommandBuilder(da);

    DataTable dt = dataSet.Tables[0];
    DataRow currentrow = dt.Rows[row];
    currentrow.Delete();

    da.Fill(dataSet);
    if (objdataset_delete.HasChanges() == true)
    dt = dt.GetChanges();

    da.Update(dt);

    }
    خطا
    The SelectCommand property has not been initialized before calling 'Fill'.
    چه باید کرد؟


    البته برای سوال پست قبل مطلبی رو در بخش پیدا کردم که یکی از دوستان بر طبق بررسی شخصی متوجه شده بود که تنها
    زمان و منابع صرف تعداد رکوردهای تغییر یافته می شود ، و تمام رکوردها به روز رسانی نمی شوند

    آیا مطلبی علمی در این مورد وجود دارد ؟

    با تشکر

  6. #6
    کاربر تازه وارد آواتار PERFORIN
    تاریخ عضویت
    مرداد 1387
    محل زندگی
    YAZD
    سن
    34
    پست
    74

    نقل قول: ویرایش ی datagrid و ذخیره ی آن در database

    سلام
    من یک پیشنهاد دیگه براتون دارم
    datagrid گزینه ی خوبی برای کاری که شما می خواین انجام بدین نیست
    من ms flex grid را پیشنهاد می کنم البته این ابزار جزو کنترل های اصلی نیست و باید خودتون اونا اضافه کنید این کنترل این قابلیت را داره که هر کدوم از سلول هاش به عنوان یک textbox عمل کنه در حالی که شکلش مثل datagrid هست

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

    نقل قول: ویرایش ی datagrid و ذخیره ی آن در database

    سلام
    تشکر

    دوستان کسی میدونه ایراد اون کد از چیه
    و چه باید کرد؟؟

    با تشکر

  8. #8
    کاربر تازه وارد آواتار sara_B
    تاریخ عضویت
    مرداد 1387
    محل زندگی
    شيراز
    سن
    38
    پست
    51

    Wink نقل قول: ویرایش ی datagrid و ذخیره ی آن در database

    سلام دوستان.من قبل از پرسیدن سوالمdatagrid رو search کردم و تمام سوال جواب ها رو خوندم و علی رغم تکراری بودن اکثر سوال ها و جواب ها, جوابمو نگرفتم.
    من می خوام وقتی محتویات یه table در datagrid نمایش داده می شه , همون جا تو datagrid تغیییرات رو در فیلدها اعمال کنم و با زدن یک دکمه ی ذخیره این تغییرات در جدولم در database , ذخیره بشه.و برام مهمه که این تغییرات در خود datagrid صورت بگیره و نه از طریق چند تا textbox .ممنون می شم راهنماییم کنید.با کد البته.
    متشکرم.

    با سلام

    واسه حل مشكلتون با من همراه بشيد (مراحل رو به ساده ترين شكل ممكن توضيح دادم)
    اول واسه راحتي كارتون يه پروژه ي آماده(پروژه كه نه ، يه مثال كوچولو) گذاشتم كه مي تونيد دانلود كنيد:(اين مثال web app هستش )
    چيزايي كه واسه فهميدن پروژه بهتره بدونيد:

    1- نام connection string من conn است .(البته نيازي به attach كردن نيست ، كافيه پروژه را درويژوال استوديو( VS2005 ، يا VS2008 ) باز كنيد.
    2- نام ديتا بيس: Ecommerce ، كه داراي يك جدول به نام Employee (كارمندان) است.
    3-اين جدول داراي سه فيلد :
    1- ID
    2-name
    3- family
    مي باشد.

    در اين پروژه عمليات زير قابل اجرا است :
    1-انتخاب يك ستون از گريد ويو -----(Select)
    2-حذف يك ركورد از گريد ويو و بلافاصله حذف از ديتا بيس-----(Delete)
    3-ويرايش تمام ستون ها در گريد ويو و اِعمال آن در جدول ديتا بيس ( امكان به روز رساني يا انصراف از حالت ويرايش)----- (Edit)
    4-افزودن يك ركورد جديد به گريد ويو و ديتا بيس-----(Insert)

    كارايي كه توي اين مثال انجاميدم ، اينجا واستون شرح مي دم .
    (البته 2 روش وجود داره كه يكي راحت تره ، و اون يكي كامل تره ، كه من دومي رو مي گم)

    توضيح چهار قابليت بالا :
    براي شروع مثلث كوچك كنار گريد ويو را كليك كنيد و گزينه ي Edit Columns را انتخاب نماييد:

    مورد اول و دوم :
    انتخاب يك ستون از گريد ويو -----(Select) و حذف يك ركورد از گريد ويو و بلافاصله حذف از ديتا بيس-----(Delete) :

    يك Button Field از ليست Add كنيد.
    خصوصيت Text را برابر با "انتخاب" قرار دهيد.
    خصوصيت CommandName را برابر با btnselect و يا نام دلخواه ديگري بگذاريد(از اين نام براي اجراي دستورات دلخواهي كه قرار است با كليك بر روي اين دكمه اجرا شوند ، در كد نويسي استفاده مي شود.)
    اكنون به پنل properties ِ مربوط به گريد ويو رفته و دكمه ي Events را انتخاب كنيد ، تا event هاي موجود كه براي گريد ويو در نظر گرفته شده ، نمايش داده شود .
    مقابل كلمه ي RowCommand دبل كليك كنيد تا وارد صفحه ي كد شود ، اكنون كد زير را وارد نماييد:


    int idx;
    if (e.CommandName == "btnselect")
    {
    idx = Convert.ToInt32(e.CommandArgument);
    GridView1.Rows[idx].BackColor = System.Drawing.Color.LightGreen;
    }
    else if (e.CommandName == "btndelete")
    {
    idx = Convert.ToInt32(e.CommandArgument);
    int ID = (int)GridView1.DataKeys[idx].Value;
    delete_employee(ID);
    refresh_grvEmployee();
    }


    مجددا به Edit Columns باز گشته و يك دكمه ي ديگر مانند دكمه ي "انتخاب" ، Add كنيد.
    با اين تفاوت كه :
    خصوصيت Text را برابر با "حذف كارمند" قرار دهيد.
    خصوصيت CommandName را برابر با btndelete و يا نام دلخواه ديگري بگذاريد.

    نكته :با انتخاب هر ركورد در اين پروژه ، رنگ ركورد به رنگ سبز روشن در مي آيد ، جهت تغيير رنگ در كد زير ، به جاي LightGreenرنگ دلخواه خود را قرار دهيد:

    GridView1.Rows[idx].BackColor = System.Drawing.Color.نام رنگ دلخواه شما;


    مورد سوم :
    ويرايش يا انصراف از حالت ويرايش----- (Edit)

    گريد ويو داراي يك دكمه ي سه وضعيتي به نام edit,update,cancle مي باشد، كه هنگام كار با گريد ويو در پنجره ي Edit Columns و در ليست سمت چپ (available list ) مشاهده مي نماييد.
    اين دكمه را Add كنيد و در بخش خصوصيات آن (كه در ليست سمت راست مشاهده مي كنيد) تغييرات دلخواه خود (تغيير نام دكمه ها به فارسي ) را انجام دهيد.

    به پنل properties ِ مربوط به گريد ويو رفته و دكمه ي Events را انتخاب كنيد ، تا event هاي موجود كه براي گريد ويو در نظر گرفته شده ، نمايش داده شود .
    مقابل كلمات RowCancelingEdit، RowEditing و RowUpdating دبل كليك كنيد تا evente مربوط به آنها در قسمت كد قرار گيرد .
    اكنون طبق مثال من در پروژه كدها را به ترتيب وارد نماييد، اكنون پروژه ي شما آماده ي اجراست...

    (جهت درج اطلاعات (Insert) نيز ابتدا بر روي فرم خود ، كنترل اي لازم را قرار دهيد ،دكمه ي "ذخيره ي اطلاعات" را در فرم قرار داده ، رويداد onclick دكمه را در قسمت كد فعال كنيد ،و كدهايي كه من در تابع رويداد onclick دكمه ي btnSave نوشتم را ضافه كنيد.)

    موفق باشيد.
    فایل های ضمیمه فایل های ضمیمه
    آخرین ویرایش به وسیله sara_B : شنبه 16 آذر 1387 در 23:27 عصر

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

    نقل قول: ویرایش ی datagrid و ذخیره ی آن در database

    سلام دوست عزیز sara_b

    نمونه کد شما رو دیدم
    لطف شما قابل تقدیره
    امیدوارم برای دوستان مفید واقع بشه

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

    با تشکر

  10. #10

    نقل قول: ویرایش ی datagrid و ذخیره ی آن در database

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

    قبل از da.update

    this.BindingContext[dt].EndCurrentEdit();


    یا

    da.update(ds1,"table1");

  11. #11
    کاربر دائمی
    تاریخ عضویت
    فروردین 1387
    محل زندگی
    دیار کریمان
    پست
    1,008

    نقل قول: ویرایش ی datagrid و ذخیره ی آن در database

    سلام جناب rostamkhani
    تشکر

    کد اول رو قرار دادم و ایرروری نداد
    اما برای کد زیر احتیاج به یک استرینگ داره
      da.Update(dataset, " ");
    چی باید بنویسم ؟
    و ایررور fill هم همچنان باقی است
    اگر اون رو ببندم
    روی
     da.Update(dt);
    ایررور
    The DataAdapter.SelectCommand property needs to be initialized.
    رو میده
    چه باید کرد ؟؟

    با تشکر

  12. #12

    چه باید کرد؟

    سلام فکر کنم مشکل از نداشتن new command درون dataAdapter باشد
    این خط اینگونه تغییر بده

    SqlDataAdapter da = new SqlDataAdapter(new sqlcommand("select * from table"))

    لازم بذکر است که دستوراتی که SqlCommandBuilder برای insert ,updateیاdeleteمیسازد براساس دستور selectداخل دیتا آداپتور می باشد.لذا دستور select تان را درون تعریف command یا دیتا آداپتور بیاورید.امیدوارم مفید باشد.

  13. #13
    کاربر دائمی
    تاریخ عضویت
    فروردین 1387
    محل زندگی
    دیار کریمان
    پست
    1,008

    نقل قول: ویرایش ی datagrid و ذخیره ی آن در database

    سلام

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

    باز هم از لطفتون ممنونم


    دوستان چه باید کرد؟

    با تشکر

  14. #14

    نقل قول: ویرایش ی datagrid و ذخیره ی آن در database

    سلام ببینید این
    The SelectCommand property has not been initialized before calling 'Fill'. 
    پیغام یعنی SelectCommand شیئ DataAdapter تون درست property هاش تنظیم نشده.
    از کدی که گذاشتید نمی توان به برنامه فهماند که با sp کارکردی مثلا درتعریف SqlDataAdapter باید درون یک استرینگ نام sp خود را می نوشتی و خاصیتی فکر کنم بنام commandType آنرا مساوی spمیکردی.بعدش هم پرامترهای دیتا آداپتورتون رو که اینجا میتونه idرکورد حذفی باشه را به آن می دادید.
    خلاصه برنامه باید یه جوری بفهمه که با چه بانکی ارتباط برقرار کنه(conection string)وبا اطلاعات چه برخوردی کنه(select command یا sp).
    درضمن زمان استفاده ازدرستور
    da.Fill(dataSet);
    موقعیست که کار حذف تمام شودوحالابخواهی حاصل کارراازبانک بخوانی یا قبل از استفاده از دستور delete چراکه با پرکردن دیتا ست دیگررکوردحذف شده ات بدون حالت حذف می شودواثرش ازبین میرود.

  15. #15
    کاربر دائمی
    تاریخ عضویت
    فروردین 1387
    محل زندگی
    دیار کریمان
    پست
    1,008

    نقل قول: ویرایش ی datagrid و ذخیره ی آن در database

    سلام
    xx... جان تشکر
    توضیحات کامل بود
    ولی اینطوری توی فرمم باید برای ارتباط با پایگاه دوباره کلی کد بنویسم(کد داخل کلاس ها رو کپی پیست کنم)
    و جای دردناکش اینجاست که 12-13 تا تیبل وجود داره

    میشه توضیحات زیباتون رو به قطعه کی جم و جور مزین کنید

    با تشکر

  16. #16

    نقل قول: ویرایش ی datagrid و ذخیره ی آن در database

    وقتی شما از دستور fill استفاده میکنید باید مشخص کنید که اطلاعات کدام جدول دیتاست update شود مثال:

    da.fill(DS,"table1") 
    da.fill(ds, "table2"


    ,وبعد از تغییر جدول با دستور زیر update نمایید:

    da.update(DS, "table1")
    da.update(ds,"table2")

  17. #17
    ا سلام
    من به یک مشکل ناجور و سختی برخورد کرده ام . واعصابم بهم ریخته است.
    می رکورد هایی به DADAGRID اضافه می کنم اما وقتی که از برنامه در حال اجرا خارج می شوم و دوباره وارد می شوم این رکورد ها در پایگاه داده ذخیره نشده است از روشهای مختلفی هم برای درج رکورد و آپدیت DATASET استفاده کردهام ولی جواب نداده اند.
    تورو به خاطر خدا یه نفر به من کمک کند.

    سلام
    من به یک مشکل ناجور و سختی برخورد کرده ام . واعصابم بهم ریخته است.
    می رکورد هایی به DADAGRID اضافه می کنم اما وقتی که از برنامه در حال اجرا خارج می شوم و دوباره وارد می شوم این رکورد ها در پایگاه داده ذخیره نشده است از روشهای مختلفی هم برای درج رکورد و آپدیت DATASET استفاده کرده ام ولی جواب نداده اند.
    تورو به خاطر خدا یه نفر به من کمک کند.

    به مشکل سختی برخورد کرده ام .
    رکورد هایی به dataset , datagrid اضافه می کنم اما به پایگاه داده اضافه نمی شود.
    وقتی که از حالت اجرا خارج می شوم ودوباره برنامه را اجرا می کنم رکورد های جدید در datagrid نمایش داده نمی شوند علت چیست ؟
    فایل های ضمیمه فایل های ضمیمه
    آخرین ویرایش به وسیله majid325 : دوشنبه 23 فروردین 1389 در 17:40 عصر دلیل: پستها تکراری

  18. #18

    نقل قول: ویرایش ی datagrid و ذخیره ی آن در database

    سلام.
    اگر ممکنه امکان ویرایش یک رکورد در گرید ویو را در windows application هم لطف کنید و توضیح مختصری بدید. چون شما فقط این کار رو در web app گفتید من نتونستم تو پروژم به کار بگیرم.

  19. #19
    کاربر دائمی
    تاریخ عضویت
    مهر 1388
    محل زندگی
    iran
    پست
    311

    نقل قول: ویرایش ی datagrid و ذخیره ی آن در database

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

    ممنون.

  20. #20

    نقل قول: ویرایش ی datagrid و ذخیره ی آن در database

    نقل قول نوشته شده توسط manij_mhm مشاهده تاپیک
    سلام.
    چطوری میشه تغییران موجود در دیتاگرید ویو رو در دیتابیس ثبت کرد. مشکل اینجاست که از چند جدول برای نمایش اطلاعات موجود در گریدویو استفاده شده.

    ممنون.
    از ds.update نمیتونید استفاده کنید ...
    من در این حالت برای ذخیره داده ها تعداد ردیف ها رو بدست میارم و در یک حلقه for میزاریم و اطلاعات رو با توجه به pk به روز میکنم ...

  21. #21
    کاربر دائمی
    تاریخ عضویت
    مهر 1388
    محل زندگی
    iran
    پست
    311

    نقل قول: ویرایش ی datagrid و ذخیره ی آن در database

    از ds.update نمیتونید استفاده کنید ...
    من در این حالت برای ذخیره داده ها تعداد ردیف ها رو بدست میارم و در یک حلقه for میزاریم و اطلاعات رو با توجه به pk به روز میکنم ...
    ممنون.
    بله دقیقا مشکل همینجاست که نمی شه از ds.update استفاده کرد.
    یعنی شما کل داده ها رو بازنویسی می کنید؟
    حجم داده ها زیاده اگه بخوام کلشون رو بازنویسی کنم خیلی بهینه نمیشه.
    راهی نیست که به سطر هایی دسترسی داشت که تغییر کردند.

  22. #22
    کاربر دائمی
    تاریخ عضویت
    مهر 1388
    محل زندگی
    iran
    پست
    311

    نقل قول: ویرایش ی datagrid و ذخیره ی آن در database

    کسی نمی تونه کمک کنه؟

  23. #23

    نقل قول: ویرایش ی datagrid و ذخیره ی آن در database

    سلام خسته نباشین
    من سر پروژم لطفا پروژه اماده ای از متدهای دیلیت و ویرایش و ایجاد بانک اطلاعاتی دارین تا کمکم کنه ؟

  24. #24

    نقل قول: ویرایش ی datagrid و ذخیره ی آن در database

    خیلی خیلی عجله دارم ممنون میشم اگه کمکم کنین

  25. #25

    نقل قول: ویرایش ی datagrid و ذخیره ی آن در database


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

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