将SelectedCells信息传递到不同页面上的另一个DataGrid

时间:2014-02-19 10:56:51

标签: c# wpf datagrid cells datagridcell

我已经尝试了很多东西来解决这个问题,我似乎无法找到正确的答案。

我有一个包含6列的DataGrid,用户只有在点击第6列上的任意行时才会被重定向到其他页面。

enter image description here

因此,用户只能点击To-Do下的任何单元格。当他们点击那一行时,我需要它找到与该单元格在同一行的Type E.G如果我点击了6 To-Do,应该知道我点击了行类型Football

我希望这会将第一列中的Type传递到另一个页面,以便我可以调出To-Do下的所有不同Type项。

这就是我的尝试:

        cSViewEntity selectedView = dgFake.SelectedItem as cSViewEntity;

        AllocateAudits page = new AllocateAudits()
        {
            DataContext = selectedView
        };
        FrameNavigation.Navigate(page);

但是当我这样做时,它没有达到这个方法:

    public void Page_OnNavigatedTo(object sender, NavigationEventArgs e)
    {

        var newDataContext = e.Content;

        _View = (cSViewEntity)newDataContext;

        _Transactions = new List<cAuditTransactionTypeEntity>();

        _Transactions = sp.GetTransactionTypes().ToList();

         string TransactionType = _View.TransactionType;

        int TransactionTypeID = _Transactions.FirstOrDefault(w => w.TransactionType == TransactionType).TransactionTypeId;

        dgAllocate.ItemsSource = sp.GetTransactionsNotEvaluated(TransactionTypeID).ToList();
    }

任何帮助都会非常有帮助,

感谢。

回答问题:

我将SelectedItem传递给另一个页面,然后在该页面上找到了Type并在该类型上运行了一个存储过程。

cSViewEntity obj = (cSViewEntity)dgFake.SelectedItem;
     AllocateAudits page = new AllocateAudits(obj)
     {
         DataContext = obj
     };
         FrameNavigation.Navigate(page);
     }

然后将它传递给构造函数,然后在方法的开头添加它。

 private void Rawr(cSViewEntity obj)
 {
      var transactiontype = _obj.TransactionType;

      //Stores the information from newDataContext to the entity with the name of _View.
      _View = (cSViewEntity)obj;

1 个答案:

答案 0 :(得分:0)

对于最后一列(column6),我建议你创建一个Datagrid templateCell。

例如:

<DataGrid Name="DG1" ItemsSource="{Binding}" AutoGenerateColumns="False" >
 <DataGrid.Columns>
  <DataGridTemplateColumn Header="To Do" >
   <DataGridTemplateColumn.CellTemplate>
    <DataTemplate>
     <Button x:Name="MyNavigationButton" Content="{Binding ToDo}" Click="MyClickEvent"/>
    </DataTemplate>
   </DataGridTemplateColumn.CellTemplate>
  </DataGridTemplateColumn>
 </DataGrid.Columns>
</DataGrid>
Code Behind中的

,运行MyClickEvent

private void MyClickEvent(object sender, EventArgs e)
{
 var myBTNData = ((Button)sender).DataContext;

 //here does follow your code based on the myBTNData
}

希望它能让你开始。您还可以使用其他元素(如超链接)