Member 12799217 Ответов: 1

Как получить данные из datagrid с помощью datarowview в WPF с помощью C#


У меня есть DataGrid, который привязан к общему списку.Я хочу получить значения из DataGrid с помощью объекта datarowview но показывают сообщение об ошибке недопустимый литой исключение было перехвачено

Что я уже пробовал:

Мой код таков

private void dgSearch_SelectionChanged_1(object sender,SelectionChangedEventArgs e)
     {
         try
         {
            DataRowView drv=(DataRowView) dgSearch.SelectedItem;
            txtMRName.Text = drv["Id"].ToString();
            txtEditMrSe.Text = drv["Name"].ToString();
            dgSearch.Visibility = Visibility.Collapsed;
         }
         catch (Exception ex)
         {

         }
     }

Richard Deeming

Так что отладьте свой код и выясните, какой тип SelectedItem действительно быть.

Кроме того, не проглатывайте молча все исключения. Это значительно затрудняет диагностику любых проблем. Ловите только те исключения, с которыми вы действительно можете иметь дело.

1 Ответов

Рейтинг:
8

Member 12799217

общественного недействительными filldatagrid()
{
long idclient =0;
MRinfoHelper _MRinfoHelper = новый MRinfoHelper();
MRlistLogic objlist = новый MRlistLogic();
List< MRInfoModel> lstMRInfoModel = новый список & lt;MRInfoModel>();
lstMRInfoModel =JsonConvert.DeserializeObject & lt;List<MRInfoModel> & gt;(_MRinfoHelper.MRList(true, idclient));
dgShowData.ItemsSource = lstMRInfoModel;


}


<DataGrid HorizontalAlignment="Left" Name="dgSearch" Cursor="Hand" HeadersVisibility="None" Visibility="Collapsed" RowHeight="25" CanUserAddRows="False" AutoGenerateColumns="False" HorizontalGridLinesBrush="#FF808080" VerticalGridLinesBrush="#FF808080" SelectionChanged="dgSearch_SelectionChanged_1" Margin="55,205,0,0" VerticalAlignment="Top" Width="222" Height="Auto">
           <DataGrid.Columns>
               <DataGridTextColumn Header="ID" Binding="{Binding Path=Id}" Visibility="Collapsed" ></DataGridTextColumn>
           <DataGridTextColumn Header="Term" Width="*" Binding="{Binding Path=Name}"></DataGridTextColumn>
           </DataGrid.Columns>





private void dgSearch_SelectionChanged_1(object sender, SelectionChangedEventArgs e)
    {
        try
        {
            var myListView = sender as DataGrid;
            if (myListView != null)
            {
                var selectedItem = myListView.SelectedItem.ToString();
                Type t = dgSearch.SelectedItem.GetType();
                System.Reflection.PropertyInfo[] props = t.GetProperties();
                string propertyValue = props[1].GetValue(dgSearch.SelectedItem, null).ToString();
              // txtMRName.Text = propertyValue;
                getDataByIdFun(Convert.ToInt64(propertyValue));
            }
        }
        catch (Exception ex) { }


    }

    public void getDataByIdFun(long id)
    {
        MRlistLogic objlist = new MRlistLogic();
        MRInfoModel _mrInfoModel = new MRInfoModel();
        _mrInfoModel = objlist.GetMRByID(id);
        txtMRName.Text = _mrInfoModel.Mrname;
    }