DataGridView चेकबॉक्स स्तंभ - मूल्य और कार्यक्षमता

वोट
17

मैं अपने सी # रूप में एक DataGridView करने के लिए एक चेकबॉक्स स्तंभ जोड़ दिया है। समारोह गतिशील होने की जरूरत है - आप एक ग्राहक का चयन करें और है कि उनके आइटम कि सेवित किया जा सकता है के सभी को लाता है, और आप का चयन आप के आसपास इस समय सेवा प्रदान की करना चाहते हैं जो उनमें से।

वैसे भी, कोड अब DGV की शुरुआत करने के लिए एक chckbox जोड़ देगा। क्या मुझे पता है की जरूरत है निम्नलिखित है:

1) मैं कैसे डिफ़ॉल्ट रूप से कि इतने पूरे स्तंभ जाँच है यह कर सकता हूँ? 2) मुझे यकीन है कि मैं केवल जाँच पंक्तियों से मूल्यों को हो रही है जब मैं सिर्फ DGV नीचे एक बटन पर क्लिक करें कैसे बना सकते हैं?

यहां कॉलम डाला प्राप्त करने के लिए कोड है:

DataGridViewCheckBoxColumn doWork = new DataGridViewCheckBoxColumn();
            doWork.HeaderText = Include Dog;
            doWork.FalseValue = 0;
            doWork.TrueValue = 1;
            dataGridView1.Columns.Insert(0, doWork);

तो आगे क्या? किसी भी तरह की सहायता का स्वागत किया जाएगा!

06/08/2009 को 10:17
का स्रोत उपयोगकर्ता
अन्य भाषाओं में...                            


11 जवाब

वोट
37

  1. जो सीधे करने के लिए कोई तरीका नहीं है। एक बार जब आप ग्रिड में अपने डेटा है, तो आप पंक्तियों के माध्यम से लूप और जांच कर सकते हैं इस तरह प्रत्येक बॉक्स:

    foreach (DataGridViewRow row in dataGridView1.Rows)
    {
        row.Cells[CheckBoxColumn1.Name].Value = true;
    }
    
  2. घटना क्लिक कुछ इस तरह दिख सकता है:

    private void button1_Click(object sender, EventArgs e)
    {
        List<DataGridViewRow> rows_with_checked_column = new List<DataGridViewRow>();
        foreach (DataGridViewRow row in dataGridView1.Rows)
        {
            if (Convert.ToBoolean(row.Cells[CheckBoxColumn1.Name].Value) == true)
            {
                rows_with_checked_column.Add(row);
            }
        }
        // Do what you want with the check rows
    }
    
06/08/2009 को 13:17
का स्रोत उपयोगकर्ता

वोट
14
private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
    DataGridViewCheckBoxCell ch1 = new DataGridViewCheckBoxCell();
    ch1 = (DataGridViewCheckBoxCell)dataGridView1.Rows[dataGridView1.CurrentRow.Index].Cells[0];

    if (ch1.Value == null)
        ch1.Value=false;
    switch (ch1.Value.ToString())
    {
        case "True":
            ch1.Value = false;
            break;
        case "False":
            ch1.Value = true;
            break;
    }
    MessageBox.Show(ch1.Value.ToString());
}

यदि DataGridView चेकबॉक्स या कोई चेक नहीं किया गया सबसे अच्छा समाधान खोजने के लिए।

29/08/2010 को 18:39
का स्रोत उपयोगकर्ता

वोट
3

यह मेरे लिए एक लंबे समय कैसे सभी रिकॉर्ड के माध्यम से लूप के बिना यह करने के लिए यह पता लगाने की ले लिया। मैं एक के लिए बाध्य DataGridView स्रोत है, और सभी क्षेत्रों चेकबॉक्स स्तंभ के अलावा बाध्य कर रहे हैं। इसलिए मैं नहीं है / प्रत्येक पंक्ति जोड़ने के लिए एक पाश की जरूरत है और मैं सिर्फ इस purpuse के लिए एक बनाने के लिए नहीं चाहता था। तो कोशिश कर के एक बहुत बाद मैं अंत में यह मिल गया। और यह वास्तव में बहुत बहुत ही सरल है:

सबसे पहले आप एक कस्टम-चेकबॉक्स सेल, जैसे के साथ अपनी परियोजना के लिए एक नया .cs फ़ाइल जोड़ने

DataGridViewCheckboxCellFilter.cs:

using System.Windows.Forms;

namespace MyNamespace {
    public class DataGridViewCheckboxCellFilter : DataGridViewCheckBoxCell {
        public DataGridViewCheckboxCellFilter() : base() {
            this.FalseValue = 0;
            this.TrueValue = 1;
            this.Value = TrueValue;
        }
    }
}

इस के बाद, अपने GridView है, जहां आप चेकबॉक्स-स्तंभ जोड़ने पर, आप करते हैं:

// add checkboxes
DataGridViewCheckBoxColumn col_chkbox = new DataGridViewCheckBoxColumn();
{
    col_chkbox.HeaderText = "X";
    col_chkbox.Name = "checked";
    col_chkbox.CellTemplate = new DataGridViewCheckboxCellFilter();                
}
this.Columns.Add(col_chkbox);

और बस! हर अपने चेक बॉक्स एक नई पंक्ति में जोड़ दिए जाते हैं, वे सही पर सेट हो जाएगा। का आनंद लें!

23/05/2011 को 00:35
का स्रोत उपयोगकर्ता

वोट
4

यहाँ इस प्रश्न के लिए एक एक लाइनर जवाब

List<DataGridViewRow> list = DataGridView1.Rows.Cast<DataGridViewRow>().Where(k => Convert.ToBoolean(k.Cells[CheckBoxColumn1.Name].Value) == true).ToList();
24/01/2012 को 07:37
का स्रोत उपयोगकर्ता

वोट
1

आप एक gridview एक से अधिक चेकबॉक्स युक्त है, तो .... आप इस प्रयास करना चाहिए ....

Object[] o=new Object[6];

for (int i = 0; i < dgverlist.RowCount; i++)
{
    for (int j = 2; j < dgverlist.ColumnCount; j++)
    {
        DataGridViewCheckBoxCell ch1 = new DataGridViewCheckBoxCell();
        ch1 = (DataGridViewCheckBoxCell)dgverlist.Rows[i].Cells[j];

        if (ch1.Value != null)
        {
           o[i] = ch1.OwningColumn.HeaderText.ToString();

            MessageBox.Show(o[i].ToString());
        }
    }
}
16/02/2012 को 07:29
का स्रोत उपयोगकर्ता

वोट
3

आप पर यह प्रयास करते हैं तो CellContentClickइवेंट

उपयोग:

dataGridView1.EndEdit();  //Stop editing of cell.
MessageBox.Show("0 = " + dataGridView1.Rows[e.RowIndex].Cells[0].Value.ToString());
03/10/2012 को 15:24
का स्रोत उपयोगकर्ता

वोट
0

यदि स्तंभ या चेक नहीं किया गया परीक्षण करने के लिए:

for (int i = 0; i < dgvName.Rows.Count; i++)
{
    if ((bool)dgvName.Rows[i].Cells[8].Value)
    {
    // Column is checked
    }
}
12/01/2013 को 07:25
का स्रोत उपयोगकर्ता

वोट
1

1) मैं कैसे डिफ़ॉल्ट रूप से कि इतने पूरे स्तंभ "जाँच" है यह कर सकता हूँ?

var doWork = new DataGridViewCheckBoxColumn();
doWork.Name = "IncludeDog" //Added so you can find the column in a row
doWork.HeaderText = "Include Dog";
doWork.FalseValue = "0";
doWork.TrueValue = "1";

//Make the default checked
doWork.CellTemplate.Value = true;
doWork.CellTemplate.Style.NullValue = true;

dataGridView1.Columns.Insert(0, doWork);

2) मुझे यकीन है कि मैं केवल "जाँच" पंक्तियों से मूल्यों को हो रही है कैसे कर सकते हैं?

foreach (DataGridViewRow row in dataGridView1.Rows)
{
    if (row.IsNewRow) continue;//If editing is enabled, skip the new row

    //The Cell's Value gets it wrong with the true default, it will return         
    //false until the cell changes so use FormattedValue instead.
    if (Convert.ToBoolean(row.Cells["IncludeDog"].FormattedValue))
    {
        //Do stuff with row
    }
}
30/10/2014 को 05:31
का स्रोत उपयोगकर्ता

वोट
0

अगर यू एक डेटा प्रकार के रूप में एसक्यूएल डेटाबेस (थोड़ा) में इस स्तंभ बनाने यू इस कोड को संपादित करना चाहिए

DataGridViewCheckBoxColumn doWork = new DataGridViewCheckBoxColumn();
            doWork.HeaderText = "Include Dog";
            doWork.FalseValue = "0";
            doWork.TrueValue = "1";
            dataGridView1.Columns.Insert(0, doWork);

इसके साथ

DataGridViewCheckBoxColumn doWork = new DataGridViewCheckBoxColumn();
            doWork.HeaderText = "Include Dog";
            doWork.FalseValue = "False";
            doWork.TrueValue = "True";
            dataGridView1.Columns.Insert(0, doWork);
01/06/2016 को 23:10
का स्रोत उपयोगकर्ता

वोट
0

यह काफी सरल है

DataGridViewCheckBoxCell checkedCell = (DataGridViewCheckBoxCell) grdData.Rows[e.RowIndex].Cells["grdChkEnable"];

                bool isEnabled = false;
                if (checkedCell.AccessibilityObject.State.HasFlag(AccessibleStates.Checked))
                {
                    isEnabled = true;
                }
if(isEnabled)
 {
   // do your business process;
 }
30/06/2019 को 09:40
का स्रोत उपयोगकर्ता

वोट
0

अपने कॉलम पहले से ही बीआईटी प्रकार का एक recordset के साथ बंधन की वजह से बनाया गया है, तो स्तंभ के प्रकार पाठ वैसे भी हो जाएगा। समाधान मैं ने पाया है कि इस स्तंभ को निकालने और एक "DataGridViewCheckBoxColumn" एक ही बाध्यकारी डेटा होने से बदलने के लिए है।

            DataGridViewColumn oldCol = dgViewCategory.Columns["mycolumn"];
            int chkIdx = oldCol.Index;
            DataGridViewCheckBoxColumn chkCol = new DataGridViewCheckBoxColumn();
            chkCol.HeaderText = oldCol.HeaderText;
            chkCol.FalseValue = "False";
            chkCol.TrueValue = "True";
            chkCol.DataPropertyName = oldCol.DataPropertyName;
            chkCol.Name = oldCol.Name;
            dgViewCategory.Columns.RemoveAt(chkIdx);
            dgViewCategory.Columns.Insert(chkIdx, chkCol);
15/07/2019 को 17:25
का स्रोत उपयोगकर्ता

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more