EDIT: me di cuenta un poco tarde que estaba obligado a un DataTable. En ese caso, la idea es la misma, y puede convertir a DataRowView
y luego tomar su propiedad para obtener un DataRow
si desea trabajar con esa clase.
foreach (var item in checkedListBox1.CheckedItems)
{
var row = (item as DataRowView).Row;
MessageBox.Show(row["ID"] + ": " + row["CompanyName"]);
}
Usted tendría que emitir o analizar los elementos a sus equivalentes inflexible, o utilizar el espacio de nombres System.Data.DataSetExtensions
utilizar el DataRowExtensions.Field
method se demuestra a continuación:
foreach (var item in checkedListBox1.CheckedItems)
{
var row = (item as DataRowView).Row;
int id = row.Field<int>("ID");
string name = row.Field<string>("CompanyName");
MessageBox.Show(id + ": " + name);
}
, es necesario especificar el elemento para acceder a las propiedades de tu clase
foreach (var item in checkedListBox1.CheckedItems)
{
var company = (Company)item;
MessageBox.Show(company.Id + ": " + company.CompanyName);
}
Alternativamente, se puede utilizar el método OfType
extensión para obtener el inflexible resultados de vuelta sin poner explícitamente dentro del bucle:
foreach (var item in checkedListBox1.CheckedItems.OfType<Company>())
{
MessageBox.Show(item.Id + ": " + item.CompanyName);
}
Amigo mío, creo que no ha profundizado en mi pregunta. Estoy usando CheckedListBox. No necesito ninguna selección, en cambio quiero artículos marcados. La propiedad simplemente da el valor del artículo seleccionado solamente. – IrfanRaza
El compilador genera un mensaje de error sobre SelectedValue. – IrfanRaza
@ w69rdy: la propiedad 'CheckedItems' es una matriz de' objects'. Un 'objeto' no tiene una propiedad' SelectedValue', pueden ser cualquier cosa. –