2017-01-08 3 views
1

У меня проблема с одним из моих DataGrids, который оставляет меня в недоумении, поскольку я всегда делал это так, и это всегда срабатывало ...DataGrid, отображающий значение содержимого 'System.Data.DataRowView'

My DataTable реализуется следующим образом:

MyDataSets.Cash_TableData cashTable = new MyDataSets.Cash_TableData(); 

я затем заполнить его с некоторыми данными через:

cashTable = cashTableAdapter.GetDataByName(PersonsName); 

это все работает отлично.

У меня есть DataGrid со следующим:

<DataGrid x:Name="dataGrid" ItemsSource="{Binding}" HorizontalAlignment="Left" Margin="22,354,0,0" VerticalAlignment="Top" Height="282" Width="695" IsReadOnly="True"/> 

И я заселить DataGrid с ...

dataGrid.DataContext = cashTable.DefaultView; 

Однако, когда я делаю это каждый столбец отображает правильные данные, за исключением столбца 8 который говорит «System.Data.DataRowView».

Я сделал Console.WriteLine с каждым элементом в DataTable в столбце 8, и все это получилось правильно.

Любые идеи, необходимые для правильного отображения столбца 8? Тип столбца - строка.

Спасибо.

EDIT

Таблица денежных средств в настоящее время ниже. Некоторые имена столбцов изменены по причинам конфиденциальности ...

CREATE TABLE [dbo].[Cash Table] (
    [Id]     INT   IDENTITY (1, 1) NOT NULL, 
    [Name]    NVARCHAR (MAX) NOT NULL, 
    [Gender]    NVARCHAR (MAX) NULL, 
    [DOB]    DATE   NOT NULL, 
    [Address]   NVARCHAR (MAX) NOT NULL, 
    [Address_Two]  NVARCHAR (MAX) NOT NULL, 
    [Person_ID]   NVARCHAR (MAX) NOT NULL, 
    [Transaction_Date] DATE   NOT NULL, 
    [Item]    NVARCHAR (MAX) DEFAULT ('Not recorded') NOT NULL, 
    [xxx] NVARCHAR (MAX) DEFAULT ('Not recorded') NULL, 
    [Amount]    FLOAT (53)  NOT NULL, 
    [xxx]  NVARCHAR (MAX) NOT NULL, 
    [xxx] NVARCHAR (MAX) NOT NULL, 
    [xxx] NVARCHAR (MAX) NOT NULL, 
    [xxx]   NVARCHAR (MAX) NOT NULL, 
    [xxx]   BIT   NOT NULL, 
    [xxx]   NVARCHAR (MAX) NOT NULL, 
    [xxx]    NVARCHAR (MAX) NOT NULL, 
    CONSTRAINT [PK_Table] PRIMARY KEY CLUSTERED ([Id] ASC) 
); 
+0

вы можете разместить реализацию Cash_TableDat стоит? –

+0

Есть ли у колонки 8 имя? Проверьте [ЭТО] (https://social.msdn.microsoft.com/Forums/vstudio/en-US/c05b0ae2-86c5-4b14-9578-8e8f6d2e3175/datagrid-cell-has-systemdatadatarowview-as-a-value?forum = МОФ). – jsanalytics

+0

У столбца 8 есть имя, «Item». – Lift

ответ

3

Проверить эту нить на форумах MSDN:

DataGrid клетка имеет 'System.Data.DataRowView' в качестве значения:https://social.msdn.microsoft.com/Forums/vstudio/en-US/c05b0ae2-86c5-4b14-9578-8e8f6d2e3175/datagrid-cell-has-systemdatadatarowview-as-a-value?forum=wpf

Убедитесь, что имя столбца не содержит пробела. Например, это приведет к тому, что значение ячейки будет отображаться как «System.Data».DataRowView ":

DataTable dt = new DataTable(); 
dt.Columns.Add(new DataColumn(" ") { }); 
dt.Rows.Add("1"); 
dataGrid.ItemsSource = dt.DefaultView; 

Это работает:

dt.Columns.Add(new DataColumn("") { }); 

И это приводит к пустой ячейке (обратите внимание на замыкающий пробел в имени столбца):

dt.Columns.Add(new DataColumn("name ") { }); 

Так попытайтесь установить название столбца 8 (или независимо от индекса вашей колонки) до действительного имени без пробела:

cashTable.Columns[0].ColumnName = "unique"; 
dataGrid.DataContext = cashTable.DefaultView; 
0

управления это 3 случая, и я думаю, что столбец ComboBox, DROPDOWNLIST или что-то подобное со свойством Value

1) Колонка (или столбца элементов управления), связанные имя поля не назначен

2) Колонка (или управление столбцами), связанное с именем поля может быть неправильно

3) Колонка (или управление столбцами), связанное с именем поля имеет пробела

Смежные вопросы