Передача информации SelectedCells в другую DataGrid на другой странице

Я пробовал много вещей, чтобы обойти эту проблему, и я не могу найти правильный ответ.

у меня есть DataGrid с 6 столбцами, и пользователь должен быть перенаправлен только на другую страницу, когда он нажимает на любую строку в столбце 6.

введите описание изображения здесь

Таким образом, пользователь может нажать только на любой из ячеек в To-Do, Когда они нажимают на эту строку, мне нужно, чтобы найти Type который находится в той же строке, что и эта ячейка. Например, если я нажал 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;

1 ответ

Для последнего столбца (столбец 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
}

Надеюсь, это поможет вам. Вы также можете использовать другие элементы (например, гиперссылку)

Другие вопросы по тегам