Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/301.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 是否可以在DataGridViewCheckBoxColumn中获取所选项目的索引?_C#_Forms - Fatal编程技术网

C# 是否可以在DataGridViewCheckBoxColumn中获取所选项目的索引?

C# 是否可以在DataGridViewCheckBoxColumn中获取所选项目的索引?,c#,forms,C#,Forms,我试图在CheckBoxColumn中获取所选行的索引,但到目前为止,我没有看到属性CheckedIndex,这可能吗 public void LoadPartListView() { using (productionDataSet = new _KUKA_Sorting_Buffer_ProductionDataSet()) { using (parT_PRODUCTION_LISTTableAdapter)

我试图在
CheckBoxColumn
中获取所选
行的索引,但到目前为止,我没有看到属性
CheckedIndex
,这可能吗

 public void LoadPartListView()
    {
        using (productionDataSet = new _KUKA_Sorting_Buffer_ProductionDataSet())
        {
            using (parT_PRODUCTION_LISTTableAdapter)
            {
                dataTable = new _KUKA_Sorting_Buffer_ProductionDataSet.PART_PRODUCTION_LISTDataTable();
                parT_PRODUCTION_LISTTableAdapter.Fill(dataTable);
            }
        }
        for (int i = 0; i < dataTable.Rows.Count; i++)
        {

            partOrderListView.Add(new TestPartOrderListView
            {
                SortingTowerNumber = dataTable.Rows[i].ItemArray[(int)ProductListTable.SORTING_TOWER].ToString(),
                CustomerOrderName = dataTable.Rows[i].ItemArray[(int)ProductListTable.CUSTOMER].ToString(),
                CabinetName = dataTable.Rows[i].ItemArray[(int)ProductListTable.UPI_ARTICLE].ToString(),
                PackageNumber = dataTable.Rows[i].ItemArray[(int)ProductListTable.UPI_PACKAGE].ToString(),
                PartName = dataTable.Rows[i].ItemArray[(int)ProductListTable.NAME].ToString(),
                Barcode = dataTable.Rows[i].ItemArray[(int)ProductListTable.BARCODE].ToString(),
                LocationRow = dataTable.Rows[i].ItemArray[(int)ProductListTable.FIRST_ROW].ToString(),
                LocationColumn = dataTable.Rows[i].ItemArray[(int)ProductListTable.FIRST_COLUMN].ToString()
            });
        }
        DataGridViewCheckBoxColumn checkedColumn = new DataGridViewCheckBoxColumn();
        checkedColumn.HeaderText = "Check Items";
        advancedDataGridView1.Columns.Add(checkedColumn);

        //Get the checked indexes from checkedColumn

        bindingSource.DataSource = dataTable;

        switch (sortingTowerButtonPressed)
        {
            case 1:
                bindingSource.Filter = $"(Convert([SORTING_TOWER],System.String) IN ('{sortingTowerButtonPressed}'))";
                break;
            case 2:
                bindingSource.Filter = $"(Convert([SORTING_TOWER],System.String) IN ('{sortingTowerButtonPressed}'))";
                break;
            case 3:
                bindingSource.Filter = $"(Convert([SORTING_TOWER],System.String) IN ('{sortingTowerButtonPressed}'))";
                break;
            case 4:
                bindingSource.Filter = $"(Convert([SORTING_TOWER],System.String) IN ('{sortingTowerButtonPressed}'))";
                break;
        }
        advancedDataGridView1.Enabled = true;
        advancedDataGridView1.ReadOnly = false;


    }
public void LoadPartListView()
{
使用(productionDataSet=new\u KUKA\u Sorting\u Buffer\u productionDataSet())
{
使用(零件\生产\列表表适配器)
{
dataTable=new _KUKA_Sorting_Buffer_ProductionDataSet.PART_PRODUCTION_LISTDataTable();
零件生产列表适配器。填充(数据表);
}
}
for(int i=0;i

我应该为此做一些
活动吗?我真的需要一些帮助

您正在使用TableAdapters和强类型DataTable;你的代码不应该是这样的。我在评论中链接了一个答案,提供了类似的建议,其他人也在访问强类型表中的数据

简而言之,您的代码应该更像这样:

    for (int i = 0; i < dataTable.Count; i++)
    {
        var ro = dataTable[i]; //retrieve a strongly typed data row, not a base DataRow (do NOT use the .Rows property)

        partOrderListView.Add(new TestPartOrderListView
        {
            SortingTowerNumber = ro.SORTING_TOWER, //or whatever the column name is
            CustomerOrderName = ro.CUSTOMER, //column name etc
            ...
        });
    }
我们还可以使用过滤器点击它,然后迭代dataview:

dataTable.DefaultView.Filter = "[UserChoseThisRowBoolean] = True";
foreach(DataViewRow dvro in dataTable.DefaultView)  
  var ro = dvro.Row as YourDataRowType;
或者我们可以使用LINQ:

dataTable.AsQueryable().Where(ro => ro.UserChoseThisRowBoolean)

但是在您的情况下,我可能更喜欢循环形式

尝试以下代码,粘贴到按钮单击事件中进行测试

//Name of Grid View : dataGridView1
//Name of Column : CheckBoxColumn1


       private void button1_Click(object sender, EventArgs e)
        {
            // Place this code where you want to know the index
            for (int i = 0; i < dataGridView1.Rows.Count; i++)
            {
                if (Convert.ToBoolean(dataGridView1.Rows[i].Cells[CheckBoxColumn1.Name].Value) == true) {
                    MessageBox.Show("Index " + i); // Show index in message box or add to a list for further processing 
                }

            }
            //
        }
//网格视图的名称:dataGridView1
//列名称:CheckBoxColumn1
私有无效按钮1\u单击(对象发送者,事件参数e)
{
//将此代码放在您想知道索引的位置
对于(int i=0;i
请看,我给你写一个完整的答案
//Name of Grid View : dataGridView1
//Name of Column : CheckBoxColumn1


       private void button1_Click(object sender, EventArgs e)
        {
            // Place this code where you want to know the index
            for (int i = 0; i < dataGridView1.Rows.Count; i++)
            {
                if (Convert.ToBoolean(dataGridView1.Rows[i].Cells[CheckBoxColumn1.Name].Value) == true) {
                    MessageBox.Show("Index " + i); // Show index in message box or add to a list for further processing 
                }

            }
            //
        }