seleccionado - seleccionar fila datagridview c# por codigo
Seleccionar ciertas columnas de una tabla de datos. (6)
Este es un ejemplo práctico con un registro de salida anónimo, si tiene alguna pregunta, coloque un comentario a continuación:
clase parcial pública Form1: formulario {tabla de tabla de datos;
public Form1()
{
InitializeComponent();
#region TestData
table = new DataTable();
table.Clear();
for (int i = 1; i < 12; ++i)
table.Columns.Add("Col" + i);
for (int rowIndex = 0; rowIndex < 5; ++rowIndex)
{
DataRow row = table.NewRow();
for (int i = 0; i < table.Columns.Count; ++i)
row[i] = String.Format("row:{0},col:{1}", rowIndex, i);
table.Rows.Add(row);
}
#endregion
bind();
}
public void bind()
{
var filtered = from t in table.AsEnumerable()
select new
{
col1 = t.Field<string>(0),//column of index 0 = "Col1"
col2 = t.Field<string>(1),//column of index 1 = "Col2"
col3 = t.Field<string>(5),//column of index 5 = "Col6"
col4 = t.Field<string>(6),//column of index 6 = "Col7"
col5 = t.Field<string>(4),//column of index 4 = "Col3"
};
filteredData.AutoGenerateColumns = true;
filteredData.DataSource = filtered.ToList();
}
}
Tengo una base de datos y me gustaría saber si es posible para mí seleccionar ciertas columnas e ingresar los datos en una tabla. Las columnas se exponen a continuación.
| col1 | col2 | col3 | col4 | col5 | col7 | col8 | col8 | col10 | col10 |
Quiero seleccionar la columna col1, col2 col6, col7, col3. y distribuya los datos en una vista de cuadrícula de las filas dentro de la tabla de datos. actualmente, el código que estoy usando está debajo y solo selecciona ciertos datos. No estoy seleccionando los datos de sql. Sus datos se seleccionan de otro Excel que se almacena en una tabla de datos, pero también necesito las otras columnas en otra área.
for (int i = 1; i < table.Rows.Count; i++)
{
for (int j = 0; j < table.Columns.Count; j++)
{
if (j == 0)
{
val = filteredData.Rows[row][col].ToString();
}
else
{
val = filteredData.Rows[row][col].ToString();
if (val == "-" || val == "")
{
val = filteredData.Rows[row][col].ToString();
}
else
{
val = Convert.ToString(Math.Round(Convert.ToDouble(filteredData.Rows[row][col]), MidpointRounding.AwayFromZero));
}
}
table[j, i].TextFrame.Text = val;
col++;
}
La pregunta que me gustaría hacer es: ¿por qué incluye las columnas adicionales en su DataTable si no son necesarias?
Tal vez debería modificar su declaración de selección de SQL para que esté mirando los criterios específicos que está buscando a medida que completa su DataTable.
También puede usar LINQ para consultar su DataTable como Enumerable y crear un objeto de lista que represente solo ciertas columnas.
Aparte de eso, oculte las columnas de DataGridView que no necesita.
Primero almacene la tabla en una vista, luego seleccione las columnas de esa vista en una nueva tabla.
System.Data.DataTable table = new System.Data.DataTable();
for (int i = 1; i <= 11; i++)
table.Columns.Add("col" + i.ToString());
for (int i = 0; i < 100; i++)
{
System.Data.DataRow row = table.NewRow();
for (int j = 0; j < 11; j++)
row[j] = i.ToString() + ", " + j.ToString();
table.Rows.Add(row);
}
System.Data.DataView view = new System.Data.DataView(table);
System.Data.DataTable selected = view.ToTable("Selected", false, "col1", "col2", "col6", "col7", "col3");
Usé los datos de muestra para probar este método que encontré: Crear DataView de ADO.NET mostrando solo las columnas seleccionadas
Puedes crear un método que se vea así:
public static DataTable SelectedColumns(DataTable RecordDT_, string col1, string col2)
{
DataTable TempTable = RecordDT_;
System.Data.DataView view = new System.Data.DataView(TempTable);
System.Data.DataTable selected = view.ToTable("Selected", false, col1, col2);
return selected;
}
Puede devolver tantas columnas como sea posible ... solo agregue las columnas como parámetros de llamada como se muestra a continuación:
public DataTable SelectedColumns(DataTable RecordDT_, string col1, string col2,string col3,...)
y también agregar los parámetros a esta línea:
System.Data.DataTable selected = view.ToTable("Selected", false,col1, col2,col3,...);
Luego simplemente implementa la función como:
DataTable myselectedColumnTable=SelectedColumns(OriginalTable,"Col1","Col2",...);
Gracias...
También podemos probar así,
string[] selectedColumns = new[] { "Column1","Column2"};
DataTable dt= new DataView(fromDataTable).ToTable(false, selectedColumns);
DataView dv = new DataView(Your DataTable);
DataTable dt = dv.ToTable(true, "Your Specific Column Name");
El dt solo contiene valores de columna seleccionados.