0 امتیاز

سلام

چطوری میتوننم این کد پیاده کنم؟

سلول 2 من از نوع بولین هست.

int a=0;
if (datagridview2.rows[0].cells[2].value == true)
a=1;
else a =;

یا روشی که این کارو واسم بکنه!

 

بسته شده

1 پاسخ

+1 امتیاز
 
بهترین پاسخ

سلام ، اگر شما به خروجی فیلد value دقت کنید ، خروجیش از نوع object هستش ، به همین دلیل نمیشه از عملگر == برای مقایسه شی ای از نوع object با boolean استفاده کنید ، برای حل مشکل ابتدا این فیلد رو به boolean تبدیل کنید . متد ToBoolean کلاس Convert اینکار رو براتون انجام میده : 

int a = 0;
            if (Convert.ToBoolean(this.dataGridView1.Rows[0].Cells[0].Value) == true)
            {
                a = 1;
            }
            else
            {
                a = 2;
            }

 

لام این کارو کردم و وقتی که میخوام به دیتابیسم وصل شم و دیتاگریدم پر شه(واکشی بشه ) توی اون مرحله از این کدی که بالا نوشتین داره خطا میگیره.

Object cannot be cast from DBNull to other types.

و دیگه به مرحله پرشدن دیتاگریدم نمیره همین چا میاد بیرون

البته من میخوام این کد توی دیتاگریدم وقتی که روی اون خونه ی منحصر به فرد زده شد این شرط بررسی بشه(cell[2]) به خواطر همین این کد رو توی یه متد نوشتم و بعد در رویداد  cellchanged دیتاگریدم نوشتم مشکل که از این نیست؟
توسط (594 امتیاز) 1 6 33
اگه می خواین به محض کلیک شدن روی سلول این کد اجرا بشه ، کد رو بزارید داخل رویداد CellContentClick یا CellClick .

خطا هم مشخصه ، میگه که مقدار DBNull نمی تونه به bool تبدیل بشه . شما اول مقادیر رو واکشی کنید و در DGV بارگذاری کنید و بعد در رویداد مناسب کد رو قرار بدین . اشکال از اینه که کد رو در جای مناسب قرار نمیدین
توسط (6,145 امتیاز) 5 11 116
اومدم کد از رویداد cellchanged دراوردم خطاش رفع شد ولی ایا راهی هست که توی دیتاگرید به مجض اینکه مقدار سلول تقییر کرد(true,false) متقییرم تقیر حالت پیدا کنه a(0,1) و در label1 نمایش پیدا کنه.
توسط (594 امتیاز) 1 6 33

ی موردی پیش اومده

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

namespace DGV_TEST
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            textBox1.Text = a.ToString();

        }
        int a = 1;
        int[] array = new int[3];
        int[] array2 = new int[1];




        private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
          /*  if (Convert.ToBoolean(dataGridView1.Rows[0].Cells[0].Value) == true)
            {
                array[0] = 1;
            }
            else array[0] = 0;
            if (Convert.ToBoolean(dataGridView1.Rows[0].Cells[1].Value) == true)
            {
                array[1] = 1;
            }
            else array[1] = 0;
            if (Convert.ToBoolean(dataGridView1.Rows[0].Cells[2].Value) == true)
            {
                array[2] = 1;
            }
            else array[2] = 0;
            array2[0] = array[0] + array[1] + array[2];
            textBox1.Text = array2[0].ToString();*/
        }

        private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            if (Convert.ToBoolean(dataGridView1.Rows[0].Cells[0].Value) == true)
            {
                array[0] = 1;
            }
            else array[0] = 0;
            if (Convert.ToBoolean(dataGridView1.Rows[0].Cells[1].Value) == true)
            {
                array[1] = 1;
            }
            else array[1] = 0;
            if (Convert.ToBoolean(dataGridView1.Rows[0].Cells[2].Value) == true)
            {
                array[2] = 1;
            }
            else array[2] = 0;
            array2[0] = array[0] + array[1] + array[2];
            textBox1.Text = array2[0].ToString();


        }
    }
}

اگه تو cellcounterclick بزاریم کار انجام میشه ولی نه به محض حالت گرتفن سلول یعنی باید یه سلول دیگه مقدار دهی بشه بعد اون قبلی مقدرش تو txt به نمایش بیوفته.

ولی تو cellclick اصلا تقییرات لحاظ نمیشه!! همون عدد یکی که مونده تو txt به نمایش بیوفته و تقییرات اصلا لحاظ نمیشه.

یه کمکی دیگه ای هم کنید اینو حل کنیم.

مرسی

 

توسط (594 امتیاز) 1 6 33
شما ستونی از نوع Checkbox دارید و می خواین این عملیات به محض تغییر حالت انجام بشه ؟
توسط (6,145 امتیاز) 5 11 116
بله همین طوره ، سلول های موجود در هر سطر  مقدارشون با هم جمع بشه و سپس در یک متقییری ذخیره و در txt نمایش داده و در بانکم حاصل جمع ثبت بشه.
توسط (594 امتیاز) 1 6 33
سلام

ببخشید راه حلی واسه این مورد پیدا کردید؟
توسط (594 امتیاز) 1 6 33
سوال جدید

2,337 سوال

2,871 پاسخ

3,725 دیدگاه

3,924 کاربر

دسته بندی ها

...