DbDataAdapter可以创建与WPF绑定不兼容的DataColumn对象吗?

时间:2015-08-31 21:55:36

标签: wpf firebird

我有一种情况,我从数据库中查询数据并用它填充DataTable。然后将DataTable绑定到ItemsControl无法正确更新。问题的根源似乎与从Firebird数据库中提取数据有关,但我无法解决这可能有多重要的问题。是否可以通过实现DbDataAdapter来创建与WPF绑定不兼容的DataColumn对象?

这里有更详细的信息。 ItemsControl很简单:

  <ItemsControl ItemsSource="{Binding COEStudents}">
     <ItemsControl.ItemTemplate>
        <DataTemplate>
           <Grid>
              <Grid.ColumnDefinitions><ColumnDefinition/><ColumnDefinition/><ColumnDefinition/><ColumnDefinition/></Grid.ColumnDefinitions>
              <TextBox Text="{Binding [Foo]}" Grid.Column="0"/>
              <TextBox Text="{Binding [Foo]}" Grid.Column="1"/>
              <TextBox Text="{Binding [LastName]}" Grid.Column="2"/>
              <TextBox Text="{Binding [LastName]}" Grid.Column="3"/>
           </Grid>
        </DataTemplate>
     </ItemsControl.ItemTemplate>
  </ItemsControl>

My Window.DataContext设置为具有如下属性的对象:

public DataView COEStudents { get { return coeStudTable.DefaultView; } }

coeStudTable的填充方式如下:

 FirebirdSql.Data.FirebirdClient.FbConnection conn=new FirebirdSql.Data.FirebirdClient.FbConnection(
    @"dialect=3;charset=NONE;connection lifetime=0;connection timeout=15;pooling=True;packet size=8192;initial catalog=localhost:c:\\Users\\kdonn\\DBs\\NE\\MIS2000.fdb;server type=Default;user id=fubar;password=blah");
 FirebirdSql.Data.FirebirdClient.FbDataAdapter adapter=
    new FirebirdSql.Data.FirebirdClient.FbDataAdapter( "select first 3 LastName from Student", conn);
 adapter.Fill(coeStudTable);
 coeStudTable.Columns.Add("Foo", typeof(string));
 foreach (DataRow r in coeStudTable.Rows)
    r["Foo"]=r["LastName"];

ItemsControl显示三行数据,每行数据四份。当我更改第0列和制表符中的值时,第1列中的值显示了预期的更改值。当我更改第2列和制表符中的值时,第3列中的值不会更改。

enter image description here

如果我按照以下方式从Firebird切换到SQL Server以获取数据,那么一切正常:

 System.Data.SqlClient.SqlDataAdapter adapter=
    new System.Data.SqlClient.SqlDataAdapter( "select top 3 LastName from HRRM", 
                                              @"Data Source=localhost\SQLEXPRESS;Initial Catalog=Viewpoint2;Integrated Security=True");

这似乎表明FbDataAdapter以某种方式创建了与WPF数据绑定不搭配的DataColumn对象,但这怎么可能呢?

0 个答案:

没有答案