سؤال

ولدي داتاغريدفيف مع الأعمدة والصفوف متعددة. يحتوي العمود الأول مربع. أريد المستخدم لتكون قادرة على تحديد خانات متعددة ومن ثم تنفيذ إجراء. على سبيل المثال إذا كانت تحديد خانات في صفوف 1 و 2، والبيانات من الأعمدة الأخرى في صفوف 1 و 2 يمكن اختيار ومرت إلى MESSAGEBOX.

وأنا أعلم أنني بحاجة إلى استخدام الحدث checkbox_changed للقيام بذلك. لكن أواجه مشكلة في العمل على كيفية القيام بذلك عن صفوف متعددة؟

هل كانت مفيدة؟

المحلول

في انقر على زر الحدث القيام به:

static int SelectColumnIndex = 0;
PerformAction_Click(object sender, System.EventArgs e)
{
    string data = string.Empty;
    foreach(DataGridViewRow row in MyDataGridView.Rows)
    {
      if(row.Cells[SelectColumnIndex].Value!=null &&
             Convert.ToBoolean(row.Cells[SelectColumnIndex].Value) == true)
      {
        foreach(DataGridViewCell cell in row.Cells)
        {
          if(cell.OwningColumn.Index!= SelectColumnIndex)
          {
            data+= (cell.Value + " ") ; // do some thing
          }
        }
        data+="\n";
      }
   }
   MessageBox.Show(data, "Data");
}

نصائح أخرى

إذا كنت تريد المستخدم للنقر على زر لتنفيذ الإجراء، ثم ما تحتاجه للتعامل مع هو الحدث من زر، وليس خانة الاختيار تغيير الحدث ... وعندما يتم النقر على زر، واذهبوا من خلال جميع صفوف من داتاغريدفيف وتنفيذ إجراء على الصفوف مع مربع التحقق.

static int SelectColumnIndex = 0;

PerformAction_Click(object sender, System.EventArgs e)
{
    string data = string.Empty;    

    foreach(DataGridViewRow row in MyDataGridView.Rows)     
    {
        if(row.Cells[SelectColumnIndex].Value != null 
            &&
         Convert.ToBoolean(row.Cells[SelectColumnIndex].Value) == true)       
        {
            foreach(DataGridViewCell cell in row.Cells)        
            {
                if (cell.OwningColumn.Index != SelectColumnIndex)                               
                {
                    data+= (cell.Value + " ") ; // do some thing           
                 }
            }

            data+="\n";
        }
    }

    MessageBox.Show(data, "Data");
}

وأعتقد أنك لا تحتاج إلى أي حدث ط حل هذه المشكلة عن طريق هذا الرمز:

//In Fill DataGridViewEvent :
        DataGridViewCheckBoxColumn ChCol = new DataGridViewCheckBoxColumn();
        ChCol.Name = "CheckedRow";
        ChCol.HeaderText = "انتخاب";
        ChCol.Width = 50;
        ChCol.TrueValue = "1";
        ChCol.FalseValue = "0";
        dg.Columns.Insert(0, ChCol);

// In Button Event put these codes:

            try
            {
                MessageBox.Show(row.Cells[2].Value.ToString() + " --> " +
                row.Cells["CheckedRow"].Value.ToString());
            }
            catch
            {
                // Nothing Act
            }


enter code here

والناتج الخاص بك عن طريق هذه المعلمة:     ItemID -> 0 // لقيم غير المسجلة     ItemID -> 1 // لقيم الفحص

والآن يمكنك تصفية الصفوف التي ترجع 1 كقيمة للعمل الخاص بك اختبرت هذا الرمز والعمل بالنسبة لي

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top