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

نام تاپیک: انتخاب سطرهای دیتا گرید ویو

  1. #1

    انتخاب سطرهای دیتا گرید ویو

    سلام.

    یک دیتاگیرید در فرم دارم و یک دکمه.

    میخوام با انتخاب سطر و کلیک روی دکمه در صفحه دیگه ای فیلدها داخل تکست باکس قرار بگیرن.
    این کار رو میتونم انجام بدم اما فقط برای سطر اول.
    کد این هست:

    string d1 = dataGridView1.SelectedRows[0].Cells[1].Value.ToString();
    f.textBox2.Text = d1;


    اما برای سطرهای دیگه باید یک متغیر تعریف کنم و به جای 0،اون متغیر مثلا i رو بذارم.
    متغیر i رو چجوری باید مقدار بدم؟

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


  2. #2
    کاربر تازه وارد
    تاریخ عضویت
    مرداد 1393
    محل زندگی
    Visual Studio :)
    پست
    70

    نقل قول: انتخاب سطرهای دیتا گرید ویو

    سلام دوست من.
    یعنی کاربر که یک سطر رو انتخاب میکنه میخواید که اونو بفهمید ؟

    datagridview1.currentrow.cells[0].value

    موفق باشید

  3. #3

    نقل قول: انتخاب سطرهای دیتا گرید ویو

    بفرمائید برای ریختن اطلاعات سلول مورد نظر کادر متن.
            private void dgv1_Click(object sender, EventArgs e)
    {
    try
    {
    //TxtCodeBank.Enabled = true;
    TxtCodeBank.Text = dgv1.SelectedRows[0].Cells["ClmCodeBank"].Value.ToString();
    TxtNameBank.Text = dgv1.SelectedRows[0].Cells["ClmNameBank"].Value.ToString();
    }
    catch
    {
    }
    }

  4. #4
    کاربر تازه وارد
    تاریخ عضویت
    آبان 1391
    محل زندگی
    West Azarbaijan, Urmia
    پست
    71

    نقل قول: انتخاب سطرهای دیتا گرید ویو

    سلام

    سوالتون کمی نامفهوم هست، اگر بیشتر توضیح بدید که برای چه منظوری میخواهید این کار رو انجام بدید بهتر راهنمایی میشید.

    اما

    اگر منظورتون این هست که مقادیر ستونهای موجود در سطر انتخاب شده رو بگیرید همین کدی که استفاده میکنید درست هست.

    if(dataGridView1.SelectedRows.Count > 0)
    {
    textBox1.Text = dataGridView1.SelectedRows[ایندکس سطر انتخاب شده].Cells[نام یا ایندکس ستون مورد نظر].Value.ToString();
    }




    اگر میخواهید اطلاعات تمام سطر های انتخاب شده رو بگیرید. باید از حلقه ها استفاده کنید.
    مثال:

    if(dataGridView1.Rows.Count>=1 && dataGridView1.SelectedRows.Count == 1)
    {
    var value;

    for (int i = 0; i <= dataGridView1.SelectedRows.Count; i++)
    {
    value = dataGridView1.SelectedRows[i].Cells[نام یا ایندکس ستون مورد نظر].Value.ToString();
    }
    }


    یا:

    if(dataGridView1.Rows.Count>=1 && dataGridView1.SelectedRows.Count == 1)
    {
    var value;

    foreach(DataGridViewRow dgvr in dataGridView1.Rows)
    {
    value = dgvr.Cells[نام یا ایندکس سطون مورد نطر].Value.ToString();
    }
    }


    موفق باشید

  5. #5

    نقل قول: انتخاب سطرهای دیتا گرید ویو

    سلام.
    ممنون از همگی.
    ببینید من یک صفحه به نام لیست دانش آموز دارم.که یک دیتا گرید داره و مشخصات دانش آموز رو نشون میده.
    برای ویرایش یکی از رکوردها،یکی از سطرها رو انتخاب میکنم و روی دکمه ویرایش کلیک میکنم و به صفحه ویرایش منتقل میشم.کد دکمه ویرایش این بود:


    edit_student f = new edit_student();


    string d1 = dataGridView1.SelectedRows[0].Cells[0].Value.ToString();
    f.textBox2.Text = d1;


    string d2 = dataGridView1.SelectedRows[0].Cells[1].Value.ToString();
    f.textBox3.Text = d2;


    string d3 = dataGridView1.SelectedRows[0].Cells[2].Value.ToString();
    f.textBox4.Text = d3;


    string d4 = dataGridView1.SelectedRows[0].Cells[3].Value.ToString();
    f.textBox5.Text = d4;


    string d5 = dataGridView1.SelectedRows[0].Cells[4].Value.ToString();
    f.textBox6.Text = d5;



    در صفحه ویرایش چند تکست باکس وجود داره.تکست باکس ها با این کد پر میشن،اما فقط سطر اول گرید میاد تو این تکست باکس ها.
    اگر مثلا سطر 5 رو از گرید انتخاب کنم،اون اطلاعات نمیان تو تکست باکس.بلکه اطلاعات سطر اول تو تکست باکس ها میشینن. چون برای سطر 0 گذاشتم.

    جواب دوستمون ک گفتن به جای selectrow از CurrentRow استفاده کنیم،درسته جواب میده.
    فقط آیا وقتی ویرایش کنم اطلاعات سطر اول از گرید رو آپدیت میکنه یا همون سطری ک من انتخاب کردم؟

  6. #6

    نقل قول: انتخاب سطرهای دیتا گرید ویو

    من خودم این راه حل رو رفتم اما فقط اطلاعات رو منتقل میکنه به صفحه ویرایش ولی وقتی ویرایش میکنم اطلاعات رو میذاره توی رکورد اول گرید،نه سطر مورد نظر من.


    صفحه ای ک گرید داره این کد :

    public void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
    {
    int i;
    i = e.RowIndex;
    q = i;


    }


    q :

    public static int q;


    و داخل دکمه ویرایش این کد :


    public void pictureBox1_Click(object sender, EventArgs e)
    {
    edit_student f = new edit_student();


    string d = dataGridView1.Rows[q].Cells[0].Value.ToString();
    f.textBox6.Text = d;

    string d1 = dataGridView1.Rows[q].Cells[1].Value.ToString();
    f.textBox2.Text = d1;


    string d3 = dataGridView1.Rows[q].Cells[2].Value.ToString();
    f.textBox5.Text = d3;
    }



    چطوری در صفحه ویرایش اطلاعات ویرایش شده رو ذخیره کنم ک در رکورد خودش بشینه،نه رکورد اول.

  7. #7

    نقل قول: انتخاب سطرهای دیتا گرید ویو

    برای آپدیت قبلا از روش ویزاردی میرفتم.
    چون سطری ک من میخواستم آپدیت نمیشد به صورت دستی نوشتم اما در cmd.ExecuteNonQuery(); خطا میده.


    SqlConnection cnc = new SqlConnection(ConfigurationManager.ConnectionStrin gs["c"].ConnectionString);
    string sqlcommand = "update student set (stname=@stname,stfamil=@stfamil,stfather=@stfathe r where stid=@stid)";
    SqlCommand cmd = new SqlCommand(sqlcommand, cnc);
    cmd.Parameters.AddWithValue("@stname", textBox6.Text);
    cmd.Parameters.AddWithValue("@stfamil", textBox2.Text);
    cmd.Parameters.AddWithValue("@stfather", textBox5.Text);
    cnc.Open();
    cmd.ExecuteNonQuery();
    cnc.Close();


    علتش چیه؟
    لطفا کمک کنید من اینو درست کنم،از صب نشستم سر همین ویرایش.:(

  8. #8
    مدیر بخش آواتار ژیار رحیمی
    تاریخ عضویت
    مهر 1386
    محل زندگی
    تهران
    پست
    1,095

    نقل قول: انتخاب سطرهای دیتا گرید ویو

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

  9. #9
    کاربر تازه وارد
    تاریخ عضویت
    آبان 1391
    محل زندگی
    West Azarbaijan, Urmia
    پست
    71

    نقل قول: انتخاب سطرهای دیتا گرید ویو

    با سلام دوباره

    متد SelectedRows از DataGridView با متد Row اون متفاوت هست.

    SelectedRows لیستی از سطرهای انتخاب شده رو برمیگردونه، اگر یک سطر رو انتخاب کردین همون سطر و اگر بیش از یک سطر انتخاب کردین اونهارو به صورت آرایه برمیگردونه.

    شما برای حل مشکل

    این قسمت:

    public void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
    {
    int i;
    i = e.RowIndex;
    q = i;




    }


    و این قسمت:


    public static int q;


    رو حذف بکنید.

    و این قسمت رو :

    public void pictureBox1_Click(object sender, EventArgs e)
    {
    edit_student f = new edit_student();




    string d = dataGridView1.Rows[q].Cells[0].Value.ToString();
    f.textBox6.Text = d;

    string d1 = dataGridView1.Rows[q].Cells[1].Value.ToString();
    f.textBox2.Text = d1;




    string d3 = dataGridView1.Rows[q].Cells[2].Value.ToString();
    f.textBox5.Text = d3;
    }


    به این شکل تغییر بدین:
    public void pictureBox1_Click(object sender, EventArgs e){
    edit_student f = new edit_student();


    f.textBox6.Text = dataGridView1.SelectedRows[0].Cells[0].Value.ToString();
    f.textBox2.Text = dataGridView1.SelectedRows[0].Cells[1].Value.ToString();
    f.textBox5.Text = dataGridView1.SelectedRows[0].Cells[2].Value.ToString();

    //اینجا یک چیزی رو فراموش کردید، برای ویرایش رکورد مورد نظر باید شناسه دانش آموز زو هم به فرم ویرایش ارسال کنید.(برای انجام اینکار توضیحات پایین رو ببینید)
    f.stid = dataGridView1.SelectedRows[0].Cells[3].Value

    f.ShowDialog();
    }


    توضیحات:
    1. در فرم جدول، یک ستون به انتهای ستونهای DataGridView اضافه کنید.(دقت کنید که ستون جدید بعد از ستونهای نام، فامیل و اسم پدر قرار بگیره). و خاصیت Visible ستون جدید رو غیر فعال کنید.تا نمایش داده نشود.
    2. در فرم ویرایش یک متغیر با نام stid و از نوع var و قابلیت دسترسی Public تعریف کنید.(public var stid;)

    این کدها رو :

    SqlConnection cnc = new SqlConnection(ConfigurationManager.ConnectionStrin gs["c"].ConnectionString);
    string sqlcommand = "update student set (stname=@stname,stfamil=@stfamil,stfather=@stfathe r where stid=@stid)";
    SqlCommand cmd = new SqlCommand(sqlcommand, cnc);
    cmd.Parameters.AddWithValue("@stname", textBox6.Text);
    cmd.Parameters.AddWithValue("@stfamil", textBox2.Text);
    cmd.Parameters.AddWithValue("@stfather", textBox5.Text);
    cnc.Open();
    cmd.ExecuteNonQuery();
    cnc.Close();


    به شکل زیر تغییر بدید:

    try
    {
    SqlConnection cnc = new SqlConnection(ConfigurationManager.ConnectionStrin gs["c"].ConnectionString);
    SqlCommand cmd = new SqlCommand("UPDATE student SET stname=@stname,stfamil=@stfamil,stfather=@stfather WHERE stid=@stid", cnc);
    cmd.Parameters.AddWithValue("@stname", textBox6.Text);
    cmd.Parameters.AddWithValue("@stfamil", textBox2.Text);
    cmd.Parameters.AddWithValue("@stfather", textBox5.Text);
    cmd.Parameters.AddWithValue("@stid", stid);

    if(cnc.State != ConnectionState.Open)
    cnc.Open();

    cmd.ExecuteNonQuery();
    }
    catch(Exception ex)
    {
    MessageBox.Show(ex.Message);
    }
    finally
    {
    cnc.Close();
    }


    توصیه های تجربی برنامه نویس:
    1. قبل از ذخیره دانش آموز جدید یا ویرایش اطلاعات اون، داده های مهم (نام، فامیلی و ...) رو توی برنامه چک کنید که خالی نیاشن(در این صورت ممکنه با خطا مواجه بشید).
    2. از تابع try catch برای خطایابی سریع کدهای نوشته شده استفاده کنید(نمونه اش در سایت موجود است).
    3. از تعریف متغرهای بی مورد خودداری کنید.
    4 برای رسیدن به یک هدف در کد نویسی ممکنه راههای بیشترو راحت تری رو داشته باشید. ولی قواعد و قوانین کد نویسی رو نقض نکنید.


    موفق باشید

  10. #10

    نقل قول: انتخاب سطرهای دیتا گرید ویو

    دوست عزیز rg_BlackRose

    یک سپاس برای کمکتون کمه.
    واقعا ممنونم برای وقتی که گذاشتید.
    درست شد.

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

  1. سوال: ری استارت شدن ویژوال استودیو بعد از انتخاب سورس دیتا گرید ویو
    نوشته شده توسط Alireza.imani در بخش C#‎‎
    پاسخ: 1
    آخرین پست: جمعه 08 دی 1391, 20:48 عصر
  2. گروهبندی سطرهای دیتا گرید (ویو)
    نوشته شده توسط poudineh در بخش C#‎‎
    پاسخ: 2
    آخرین پست: پنج شنبه 22 مرداد 1388, 11:34 صبح
  3. مشکل با رنگی کردن سطرهای دیتا گرید ویو
    نوشته شده توسط khz-web1 در بخش VB.NET
    پاسخ: 5
    آخرین پست: دوشنبه 26 اسفند 1387, 16:00 عصر
  4. اضافه کردن سطرهای دیتا گرید ویو به بانک
    نوشته شده توسط hamedn128 در بخش C#‎‎
    پاسخ: 4
    آخرین پست: یک شنبه 25 شهریور 1386, 15:14 عصر
  5. انتخاب سطرهای دیتا گرید بوسیله check box
    نوشته شده توسط Saied System در بخش ASP.NET Web Forms
    پاسخ: 1
    آخرین پست: پنج شنبه 23 مهر 1383, 18:57 عصر

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

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