2015-07-13 97 views
1

我使用Datagrid在Silverlight中显示记录。我使用Itemsource绑定DataGrid中的数据。它工作正常。Datagrid中的列重新排序

我形成网格一样,

Grid x:Name="LayoutRoot" Background="White" Margin="-157,-45,-318,0"> 

     <sdk:DataGrid HorizontalAlignment="Left" Height="242.195"           
        Margin="93.282,26.764,0,0" VerticalAlignment="Top" 
        Width="496.08" RenderTransformOrigin="0.5,0.5" 
        UseLayoutRounding="False" d:LayoutRounding="Auto" Name="showrecordgrid" > 

      <sdk:DataGrid.Columns> 
       <sdk:DataGridTemplateColumn> 
        <sdk:DataGridTemplateColumn.CellTemplate> 
         <DataTemplate> 
          <Button >Edit</Button> 
         </DataTemplate> 
        </sdk:DataGridTemplateColumn.CellTemplate> 
       </sdk:DataGridTemplateColumn> 

       <sdk:DataGridTemplateColumn> 
        <sdk:DataGridTemplateColumn.CellTemplate> 
         <DataTemplate> 
          <Button >Delete</Button> 
         </DataTemplate> 
        </sdk:DataGridTemplateColumn.CellTemplate> 
       </sdk:DataGridTemplateColumn> 
      </sdk:DataGrid.Columns> 

      <sdk:DataGrid.RenderTransform> 
       <CompositeTransform Rotation="-0.566"/> 
      </sdk:DataGrid.RenderTransform> 


     </sdk:DataGrid> 

的按钮将显示在Column.I的启动需要重新排序列末端的按钮?

参考截图, enter image description here

+0

其中'Edit'和'Delete'列定义? –

+0

@Bahman_Aries请检查我的xaml代码now.I错误地提到了在编辑和删除按钮地方列名。 –

+0

如果我的回答没有解决您的问题,请详细说明。 –

回答

1

您可以使用AutoGeneratedColumns事件重新排序的列。首先为您的列一些像这样的标题名称:

<sdk:DataGrid ItemsSource="{Binding YourItems}" AutoGeneratedColumns="DataGrid_AutoGeneratedColumns" Name="showrecordgrid" ...> 

     <sdk:DataGrid.Columns> 
      <sdk:DataGridTemplateColumn Header="Edit"> 
       <sdk:DataGridTemplateColumn.CellTemplate> 
        <DataTemplate> 
         <Button >Edit</Button> 
        </DataTemplate> 
       </sdk:DataGridTemplateColumn.CellTemplate> 
      </sdk:DataGridTemplateColumn> 

      <sdk:DataGridTemplateColumn Header="Delete"> 
       <sdk:DataGridTemplateColumn.CellTemplate> 
        <DataTemplate> 
         <Button >Delete</Button> 
        </DataTemplate> 
       </sdk:DataGridTemplateColumn.CellTemplate> 
      </sdk:DataGridTemplateColumn> 
     </sdk:DataGrid.Columns> 

然后找到自己的头这些列,然后对它们重新排序是最后:

private void DataGrid_AutoGeneratedColumns(object sender, EventArgs e) 
    { 
     var grid = (DataGrid)sender; 
     foreach (var item in grid.Columns) 
     { 
      if (item.Header.ToString() == "Edit") 
      { 
       item.DisplayIndex = grid.Columns.Count - 1; 
      } 
      else if (item.Header.ToString() == "Delete") 
      { 
       item.DisplayIndex = grid.Columns.Count - 2; 
      } 
     } 
    } 
+0

我现在使用上面的代码部分按钮将显示在Column1和C2 –

+0

列定义的顺序和设置各自的DisplayIndex事项。如果你在'删除'列之前定义了'编辑'列,你必须先设置'编辑'列的'DisplayIndex'。如果你这样写我的答案,那就行了。 –

+0

您是否更改了列定义的顺序或'item.DisplayIndex = grid.Columns.Count - 1;'和'item.DisplayIndex = grid.Columns.Count - 2;'的顺序? –