2015-07-13 91 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;'的順序? –