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
}
}
//
}