Передача информации 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
}
Надеюсь, это поможет вам. Вы также можете использовать другие элементы (например, гиперссылку)