0

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

我有一个DataGrid6 列,当用户单击Column 6上的任何行时,他们应该只被重定向到另一个页面。

在此处输入图像描述

所以用户只能点击下面的任何一个单元格To-Do。当他们单击该行时,我需要它来找到与Type该单元格位于同一行的行。EG如果我点击了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 传递到另一个页面,然后在该页面上找到类型并在该类型上运行存储过程。

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;
4

1 回答 1

0

对于最后一列(第 6 列),我建议您创建一个 Datagrid 模板单元。

例如 :

<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>

在后面的代码中,运行 MyClickEvent

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

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

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

于 2014-02-19T11:16:24.337 回答