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

نام تاپیک: حذف یک رکورد از dataGridView و انجام تغییرات در همان لحظه

  1. #1
    کاربر دائمی
    تاریخ عضویت
    آبان 1386
    محل زندگی
    قم
    پست
    657

    حذف یک رکورد از dataGridView و انجام تغییرات در همان لحظه

    سلام

    من توی فرم1 یک dataGridView و یک button دارم . با زدن باتن form2 باز می شه
    سپس اسم یک فیلد را داخل textbox که درفرم2 قرار داره می نویسم و با زدن دکمه delete یک رکورد از dataGridView که در فرم1 قرار داره را حذف می کنه

    من کدش را نوشتم و درست هم کار می کنه .

    اما مشکل اینجاست که باید یک بار برنامه را ببندم و بعد باز کنم تا تغییرات در dataGridView ثبت بشن

    چیکار کنم تا بعد از زدن دکمه delete تغییرات در همان زمان در dataGridView ثبت شن و دیگه نیازی به باز و بسته کردن برنامه نباشه .
    آخرین ویرایش به وسیله mahdi_7610 : شنبه 19 اردیبهشت 1388 در 23:15 عصر

  2. #2
    کاربر تازه وارد آواتار khaste_007
    تاریخ عضویت
    شهریور 1387
    محل زندگی
    تهران
    پست
    98

    نقل قول: حذف یک رکورد از dataGridView و انجام تغییرات در همان لحظه

    با سلام این پست رو حتما بخون
    https://barnamenevis.org/showthread.php?t=157162
    آخرین ویرایش به وسیله khaste_007 : شنبه 12 اردیبهشت 1388 در 23:07 عصر

  3. #3
    کاربر دائمی
    تاریخ عضویت
    آبان 1386
    محل زندگی
    قم
    پست
    657

    نقل قول: حذف یک رکورد از dataGridView و انجام تغییرات در همان لحظه

    نقل قول نوشته شده توسط khaste_007 مشاهده تاپیک
    با سلام این پست رو حتما بخون
    https://barnamenevis.org/showthread.php?t=157162
    سلام

    من این کار را قبلا هم کردم ولی نمی شه .

    به خاطر این که من دستور حذف را توی فرم2 نوشتم . برای اینکه بتونم از فرم2 dataGridView را در فرم1 رفرش کنم چی کار کنم ؟

    اگه با کد توضیح بدید ممنم می شم .

    مرسی

  4. #4
    کاربر دائمی آواتار debugger
    تاریخ عضویت
    اردیبهشت 1387
    محل زندگی
    Turkey
    پست
    843

    نقل قول: حذف یک رکورد از dataGridView و انجام تغییرات در همان لحظه

    يه تابع load Data Grid بنويس و در هر بار انجام ئائن عمليات حذف و اضافه و دلت اونو فراخواني كن .

  5. #5

    نقل قول: حذف یک رکورد از dataGridView و انجام تغییرات در همان لحظه

    با سلام
    دوست عزیز تا آنجاییکه من متوجه شدم شما میخواهید در هر لحظه که از دیتابیس رکوردی را حذف کردید در همان لحظه دیتاگرید شما refresh شود. برای اینکار بعد از حذف از دیتابیس
    dataset را clear کرده و دوباره پر کنید و برای ÷اک کردن گرید از کد زیر استفاده کنید
    DataGridView1.DataSource = Nothing
    و بعد از آن دوباره گرید را بایند کنید

    موفق باشید

  6. #6
    کاربر دائمی آواتار captain_black81
    تاریخ عضویت
    فروردین 1387
    محل زندگی
    تهران
    پست
    231

    نقل قول: حذف یک رکورد از dataGridView و انجام تغییرات در همان لحظه

    الف - در فرم 1 یک تابع public void refreshdataGrid() بسازید که کارش رفرش دیتا گریده
    ب - هنگام باز کردن فرم 2 و قبل از frm2.show() اینو قرار بده: frm2.owner=this
    ج: در فرم 2 بعد از هر اضافه کردن:

    (this.owner as Form1).refreshdatagrid();

  7. #7
    کاربر دائمی
    تاریخ عضویت
    آبان 1386
    محل زندگی
    قم
    پست
    657

    نقل قول: حذف یک رکورد از dataGridView و انجام تغییرات در همان لحظه

    سلام

    هیچ کدوم از اینا جواب نداد .

    باز هم باید فرم را ببندم و باز کنم تا تغییرات اعمال بشه .

    plez help

  8. #8

    نقل قول: حذف یک رکورد از dataGridView و انجام تغییرات در همان لحظه

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

  9. #9
    کاربر دائمی
    تاریخ عضویت
    آبان 1386
    محل زندگی
    قم
    پست
    657

    نقل قول: حذف یک رکورد از dataGridView و انجام تغییرات در همان لحظه

    نقل قول نوشته شده توسط araelectronic@ymail.com مشاهده تاپیک
    با سلام
    کدتو رو بعد از اعمال تغییرات بذارید لطفا . اینکارو من بارها انجام دادم و جواب میده
    سلام

    راستش دستوراتی که شما گفتید را من درست متوجه نشدم . یا شاید درست نتونستم اجراشون کنم .

    این کد کجا باید نوشته بشه ؟
    DataGridView1.DataSource = Nothing
    من اصلا به گزینه nothing دسترسی ندارم .

    dataset را که من clear کردم .

    شما میشه با کد توضیح بدید ؟

    یه خورده در حد ابتدایی توضیح بدید اخه ما تازه کاریم .

    مرسی

  10. #10
    VIP آواتار raziee
    تاریخ عضویت
    اردیبهشت 1403
    محل زندگی
    تهران
    سن
    35
    پست
    2,208

    نقل قول: حذف یک رکورد از dataGridView و انجام تغییرات در همان لحظه

    نقل قول نوشته شده توسط khaste_007 مشاهده تاپیک
    با سلام این پست رو حتما بخون
    https://barnamenevis.org/showthread.php?t=157162
    این آدرس وجود نداره. (چرا؟)
    نگو به سرنوشت میبازی - تو بخوای فردا رو میسازی

  11. #11

    Smile راه حل: حذف یک رکورد از dataGridView و انجام تغییرات در همان لحظه

    با سلام

    دوست عزیز (mahdi_7610) من استفاده از کد زیر رو به شما پیشنهاد می کنم. این کد رو خودم نوشتم و امتحان کردم و کاملاً درسته و جواب میده. شاید تو بعضی از قسمت ها از روشهای غیر اصولی استفاده کردم ولی مهم اینه که کاری که میخوای رو انجام میده :

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Text;
    using System.Windows.Forms;
    using System.Data.OleDb;

    namespace DataGridViewSample
    {
    public partial class Form1 : Form
    {
    private string[] dataGridColumnsHeadersText = { "کد کتاب", "نام کتاب", "ناشر", "توضیحات" };
    private string connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + new System.IO.FileInfo(Application.ExecutablePath).Dir ectoryName + "\\SampleDataBase.mdb";
    public Form1()
    {
    InitializeComponent();
    }

    private void Form1_Load(object sender, EventArgs e)
    {
    LoadTBookTable();
    }

    private void btnDelete_Click(object sender, EventArgs e)
    {
    if (txtID.Text.Length > 0)
    {
    if (ExistRecord(txtID.Text))
    {
    if (MessageBox.Show("آیا مطمئنید که می خواهید رکورد مورد نظر را حذف کنید؟", "Question", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question) == DialogResult.Yes)
    {
    DeleteRecordByID(txtID.Text);

    // baraye hazfe satre dataGridView az code zir estefade kon...
    for (int counter = 0; counter < dataGridView1.Rows.Count - 1; counter++)
    if (dataGridView1.Rows[counter].Cells[0].Value.ToString() == txtID.Text)
    dataGridView1.Rows.RemoveAt(counter);
    // -----------------------------------------------------------
    MessageBox.Show("رکورد مورد نظر حذف شد", "Information", MessageBoxButtons.OK, MessageBoxIcon.Information);
    }
    }
    else
    {
    MessageBox.Show("رکورد مورد نظر موجود نیست", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning);
    txtID.Focus();
    txtID.SelectAll();
    }
    }
    else
    {
    MessageBox.Show("لطفاً فیلد مورد نظر را پر کنید", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning);
    txtID.Focus();
    }
    }

    private void LoadTBookTable()
    {
    DataSet table;
    OleDbDataAdapter dataAdapter;

    try
    {
    table = new DataSet();

    dataAdapter = new OleDbDataAdapter("SELECT * FROM TBook", connectionString);
    dataAdapter.Fill(table, "TBook");

    dataGridView1.DataSource = table;
    dataGridView1.DataMember = "TBook";

    for (int counter = 0; counter < dataGridColumnsHeadersText.Length; counter++)
    dataGridView1.Columns[counter].HeaderText = dataGridColumnsHeadersText[counter];

    dataGridView1.Columns[1].Width = 212;
    }
    catch (OleDbException exp)
    {
    MessageBox.Show(exp.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
    }
    finally
    {
    table = null;
    dataAdapter = null;
    }
    }

    private bool ExistRecord(string strID)
    {
    bool result = false;
    // -------------------------------------------
    DataSet table;
    OleDbDataAdapter dataAdapter;

    try
    {
    table = new DataSet();
    dataAdapter = new OleDbDataAdapter("SELECT * FROM TBook WHERE ID='" + strID + "'", connectionString);
    dataAdapter.Fill(table, "TBook");

    if (table.Tables["TBook"].Rows.Count > 0)
    result = true;
    }
    catch (OleDbException ex)
    {
    MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
    }
    finally
    {
    table = null;
    dataAdapter = null;
    }
    // -------------------------------------------
    return result;
    }

    private bool DeleteRecordByID(string strID)
    {
    bool result = false;
    // -------------------------------------------
    OleDbConnection connection;
    OleDbCommand command;

    try
    {
    connection = new OleDbConnection(connectionString);
    command = new OleDbCommand("DELETE * FROM TBook WHERE ID='" + strID + "'", connection);

    connection.Open();
    command.ExecuteNonQuery();
    connection.Close();

    result = true;
    }
    catch (OleDbException ex)
    {
    MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
    }
    finally
    {
    command = null;
    connection = null;
    }
    // -------------------------------------------
    return result;
    }
    }
    }



    موفق باشی دوست من

  12. #12

    نقل قول: حذف یک رکورد از dataGridView و انجام تغییرات در همان لحظه

    با سلام
    دوست عزیز کد ارسالی من در vb.net بود میبخشید شما میتوانید از این کد استفاده کنید


    dataGridView1.DataBindings.Clear;

  13. #13
    کاربر دائمی
    تاریخ عضویت
    آبان 1386
    محل زندگی
    قم
    پست
    657

    نقل قول: راه حل: حذف یک رکورد از dataGridView و انجام تغییرات در همان لحظه

    نقل قول نوشته شده توسط sd.CSharpProgrammer مشاهده تاپیک
    با سلام

    دوست عزیز (mahdi_7610) من استفاده از کد زیر رو به شما پیشنهاد می کنم. این کد رو خودم نوشتم و امتحان کردم و کاملاً درسته و جواب میده. شاید تو بعضی از قسمت ها از روشهای غیر اصولی استفاده کردم ولی مهم اینه که کاری که میخوای رو انجام میده :

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Text;
    using System.Windows.Forms;
    using System.Data.OleDb;

    namespace DataGridViewSample
    {
    public partial class Form1 : Form
    {
    private string[] dataGridColumnsHeadersText = { "کد کتاب", "نام کتاب", "ناشر", "توضیحات" };
    private string connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + new System.IO.FileInfo(Application.ExecutablePath).Dir ectoryName + "\\SampleDataBase.mdb";
    public Form1()
    {
    InitializeComponent();
    }

    private void Form1_Load(object sender, EventArgs e)
    {
    LoadTBookTable();
    }

    private void btnDelete_Click(object sender, EventArgs e)
    {
    if (txtID.Text.Length > 0)
    {
    if (ExistRecord(txtID.Text))
    {
    if (MessageBox.Show("آیا مطمئنید که می خواهید رکورد مورد نظر را حذف کنید؟", "Question", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question) == DialogResult.Yes)
    {
    DeleteRecordByID(txtID.Text);

    // baraye hazfe satre dataGridView az code zir estefade kon...
    for (int counter = 0; counter < dataGridView1.Rows.Count - 1; counter++)
    if (dataGridView1.Rows[counter].Cells[0].Value.ToString() == txtID.Text)
    dataGridView1.Rows.RemoveAt(counter);
    // -----------------------------------------------------------
    MessageBox.Show("رکورد مورد نظر حذف شد", "Information", MessageBoxButtons.OK, MessageBoxIcon.Information);
    }
    }
    else
    {
    MessageBox.Show("رکورد مورد نظر موجود نیست", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning);
    txtID.Focus();
    txtID.SelectAll();
    }
    }
    else
    {
    MessageBox.Show("لطفاً فیلد مورد نظر را پر کنید", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning);
    txtID.Focus();
    }
    }

    private void LoadTBookTable()
    {
    DataSet table;
    OleDbDataAdapter dataAdapter;

    try
    {
    table = new DataSet();

    dataAdapter = new OleDbDataAdapter("SELECT * FROM TBook", connectionString);
    dataAdapter.Fill(table, "TBook");

    dataGridView1.DataSource = table;
    dataGridView1.DataMember = "TBook";

    for (int counter = 0; counter < dataGridColumnsHeadersText.Length; counter++)
    dataGridView1.Columns[counter].HeaderText = dataGridColumnsHeadersText[counter];

    dataGridView1.Columns[1].Width = 212;
    }
    catch (OleDbException exp)
    {
    MessageBox.Show(exp.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
    }
    finally
    {
    table = null;
    dataAdapter = null;
    }
    }

    private bool ExistRecord(string strID)
    {
    bool result = false;
    // -------------------------------------------
    DataSet table;
    OleDbDataAdapter dataAdapter;

    try
    {
    table = new DataSet();
    dataAdapter = new OleDbDataAdapter("SELECT * FROM TBook WHERE ID='" + strID + "'", connectionString);
    dataAdapter.Fill(table, "TBook");

    if (table.Tables["TBook"].Rows.Count > 0)
    result = true;
    }
    catch (OleDbException ex)
    {
    MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
    }
    finally
    {
    table = null;
    dataAdapter = null;
    }
    // -------------------------------------------
    return result;
    }

    private bool DeleteRecordByID(string strID)
    {
    bool result = false;
    // -------------------------------------------
    OleDbConnection connection;
    OleDbCommand command;

    try
    {
    connection = new OleDbConnection(connectionString);
    command = new OleDbCommand("DELETE * FROM TBook WHERE ID='" + strID + "'", connection);

    connection.Open();
    command.ExecuteNonQuery();
    connection.Close();

    result = true;
    }
    catch (OleDbException ex)
    {
    MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
    }
    finally
    {
    command = null;
    connection = null;
    }
    // -------------------------------------------
    return result;
    }
    }
    }




    موفق باشی دوست من

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

    dataGridView من توی فرم 1 هست و من قصد دارم عمل حذف رکورد را از فرم 2 انجام بدم .

    اگه بخوام از همون فرم 1 رکورد را حذف کنم کدی که خودم نوشتم کار می کنه و مشکلی نداره .

    مشکل من اینه که من قصد دارم از form1 یک سطر را حذف کنم . و سطر حذف هم می شه اما برای اینکه تغییرات توی dataGridView اعمال بشه باید یکبار برنامه را باز و بسته کنم تا تغییرات اعمال بشه .
    من قصد دارم همون موقع که اطلاعات از دیتابیس حذف شد توی dataGridView هم اعمال بشه .

    plz help

    مرسی

  14. #14

    نقل قول: حذف یک رکورد از dataGridView و انجام تغییرات در همان لحظه

    شما دیتا گریدتو به چه صورت و با چه تابعی پر میکنی .

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

  15. #15
    کاربر تازه وارد آواتار ncs2008
    تاریخ عضویت
    شهریور 1388
    محل زندگی
    کرج
    پست
    42

    Exclamation نقل قول: حذف یک رکورد از dataGridView و انجام تغییرات در همان لحظه

    آقا مهدی راست میگه این کدهایی که گفتین جواب نداد.
    این کار در asp.net به اندازه یه آب خوردن راحته اما در winform سخته.

  16. #16

    نقل قول: حذف یک رکورد از dataGridView و انجام تغییرات در همان لحظه

    سلام
    من هم همین مشکل رو داشتم اما برطرف شد مطمئنم که جواب میده
    اول یه کلاس ایجاد کد با تابع های زیر
       public datasource()
    {
    cmd.Connection = connection;

    }
    public DataSet read(string tablename)
    {
    cmd.CommandText = "select * from "+tablename+" ";
    connection.Open();
    cmd.ExecuteNonQuery();
    connection.Close();
    datap = new SqlDataAdapter();
    datap.SelectCommand = cmd;
    datas = new DataSet();
    datap.Fill(datas, ""+tablename+"");
    //
    connection.Close();
    return datas;
    }


    بعد برای فراخونی کردنش هم هرجا که نیاز داری پس از زدن کنترلی تغییرات اعمال بشه فراخونی اش میکنی
                datasource cb = new datasource();
    DataSet ds1 = cb.read("tablename");
    dataGridView2.DataSource = ds1;
    dataGridView2.DataMember = "tablename";

برچسب های این تاپیک

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

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