Как получить значение e.RowColumnIndex события CellLongPress в элементе управления SfDataGrid?

Я нашел элемент управления DatGrid от Syncfusion и настроил его следующим образом:

      <syncfusion:SfDataGrid x:Name="PasswdVw" Grid.Row="2"
    Grid.Column="2" Grid.RowSpan="2" ItemsSource="{Binding PassWrd}" SelectedRow="{Binding SelPassRws, Mode=TwoWay}"
    GridLinesVisibility="Both" SelectionMode ="Multiple"
    NavigationMode="Row" HeaderRowHeight="35"
    MaximumWidthRequest="1400" Margin="20,0,0,0"
    CellLongPress="PasswdVw_CellLongPress">

и я хочу запускать код только в том случае, если щелкнуть определенный столбец. Итак, в коде у меня есть это:

      private void PasswdVw_CellLongPress(object sender, DataGridCellLongPressEventArgs e)
{
    if(e.RowColumnIndex != 3)
    {
       return;
    }
    
    // continue with code here.
}

Но я всегда получаю сообщение об ошибке вe.RowColumnIndexстрока, в которой говорится:

Итак, как мне использовать соответствующий номер столбца илиMappingNameна что я нажал?

2 ответа

Согласно документации , имуществоDataGridCellLongPressEventArgsclass относится к классу с таким же именем, который содержит два целочисленных поля:RowIndexиColumnIndex, каждый типаSystem.Int32(илиint).

Поэтому вы не можете сравниватьRowColumnIndexс целым числом, вместо этого вы можете сравнивать его члены только с другими целыми числами, например:

      private void PasswdVw_CellLongPress(object sender, DataGridCellLongPressEventArgs e)
{
    if(e.RowColumnIndex.ColumnIndex != 3)
    {
       return;
    }
    
    // continue with code here.
}

Судя по предоставленной вами информации, похоже, что проблема, с которой вы столкнулись, связана с TypeConversion. Похоже, вы пытаетесь преобразовать RowColumnIndex или DataGridColumn в целочисленное значение.

У вас есть возможность извлечь RowIndex или ColumnIndex из структуры RowColumnIndex. Альтернативно вы можете получить DataGridColumn из DataGridCellLongPressEventArgs. Используя DataGridColumn, вы можете получить доступ к MappingName. Пожалуйста, обратитесь к ссылке UG для получения дополнительной информации.

Ссылка UG — https://help.syncfusion.com/maui/datagrid/selection?cs-save-lang=1&amp;amp;cs-lang=csharp#celllongpress-event

Фрагмент кода:

      private void dataGrid_CellLongPress(object sender, Syncfusion.Maui.DataGrid.DataGridCellLongPressEventArgs e)
{
    //To use column index and column index
    if(e.RowColumnIndex.ColumnIndex != 3) 
    {
        return;
    }
 
    //To use column mapping name
    if (e.Column.MappingName == "EmployeeID")
    {
        return;
    }
}

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