vista proporcionado previa pasar parametros para origen ninguna net maestro llenar instancia imprimir ejemplo detalle datos con agregar c# wpf datatable datagrid

c# - proporcionado - Los datos son visibles en el visualizador DataSet pero no se muestran en un DataGrid



pasar parametros reportviewer vb net (1)

mi código es

public DataTable Load_to_DataGrid(string Line_ID) { con.ConnectionString = ConfigurationManager.ConnectionStrings[1].ConnectionString; com = new SqlCommand("LoadPoints_ToGrid", con); com.CommandType = CommandType.StoredProcedure; com.Parameters.Add(new SqlParameter("@Line_ID", Line_ID)); com.Parameters.Add("@outp", SqlDbType.NVarChar,40000).Direction = ParameterDirection.Output; SqlDataAdapter sda = new SqlDataAdapter(com); DataTable dt = new DataTable(); sda.Fill(dt); return dt; }

El proceso almacenado es

CREAT PROCEDURE [dbo].[LoadPoints_ToGrid](@Line_ID nvarchar(max),@outp nvarchar(max) output) AS BEGIN DECLARE @cols AS NVARCHAR(MAX), @query AS NVARCHAR(MAX) select @cols=STUFF((select '',''+ QUOTENAME(Thickness.Thicknes_Date) from Thickness where Line_ID=@Line_ID group by Thicknes_Date order by Thicknes_Date for XML path(''''),TYPE ). value(''.'', ''NVARCHAR(MAX)'') ,1,1,'''') if (@Line_ID!=''0'') set @query = ''select Point_NO,''+@cols+'',ST_CR,LG_CR from (select Thickness.Line_ID,Thicknes_Date,Points.Point_NO,Points.Point_Val,Points.ST_CR,Points.LG_CR from Thickness inner join Points on Thick_ID=Thicknes_ID) x pivot ( sum(Point_Val) for Thicknes_Date in(''+@cols+'') )p where Line_ID=''+@Line_ID exec (@query) set @outp=@query END

Definición de cuadrícula de datos

<DataGrid x:Name="PointsDbGrid" Grid.Row="2" AutoGenerateColumns="True" ItemsSource="{Binding}" AlternatingRowBackground="#FFDCE890" Margin="0,10,0,5" ColumnHeaderStyle="{StaticResource HeaderStyle}" ScrollViewer.CanContentScroll="True" ColumnWidth="70" > <DataGrid.ContextMenu> <ContextMenu> <MenuItem Header="New Thickness" Click="MenuItem_Click"> <MenuItem.Icon> <Image Source="Images/Add.png" Stretch="Fill"/> </MenuItem.Icon> </MenuItem> </ContextMenu> </DataGrid.ContextMenu> </DataGrid>

PointsDbGrid.DataContext = obj.Load_to_DataGrid(LineID).DefaultView; // PointsDbGrid.ItemsSource = obj.Load_to_DataGrid(LineID).DefaultView;

el resultado es

Visualizador de conjunto de datos

Output


Cuando DataGrid genera columnas para su ItemsSource, usa nombres de columna DataTable como ruta de enlace para las columnas. Si bien / symbol es válido en los nombres de DataColumn, in tiene un significado especial en la ruta de enlace y se debe escapar si es parte del nombre, por ejemplo, [80/4] no 80/4

agregue el controlador de eventos al evento AutoGeneratingColumn en xaml:

AutoGeneratingColumn="Dg_OnAutoGeneratingColumn"

y modificar enlaces con este código:

private void Dg_OnAutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e) { var textCol = e.Column as DataGridTextColumn; if (textCol == null) return; var binding = textCol.Binding as Binding; if (binding == null) return; binding.Path = new PropertyPath("[" + binding.Path.Path + "]"); }