ADO.NET 4 快速上手(8)——数据绑定

八、    数据绑定


1.    Windows Form

A.    简单绑定

一个控件容纳一条记录。

B.    分析操作生成的内容


后台窗体生成的代码:

private void tb_UserBindingNavigatorSaveItem_Click(object sender, EventArgs e)
{
    this.Validate();
    this.tb_UserBindingSource.EndEdit();
    this.tableAdapterManager.UpdateAll(this.userDataSet);
}

private void Form1_Load(object sender, EventArgs e)
{
    // TODO: This line of code loads data into the 'userDataSet.tb_User' table. You can move, or remove it, as needed.
    this.tb_UserTableAdapter.Fill(this.userDataSet.tb_User);
}

生成的控件,主要设置属性分析如下:


设置文本框的数据绑定:

this.usernameTextBox.DataBindings.Add(new System.Windows.Forms.Binding("Text", this.tb_UserBindingSource, "Username", true));

C.    复杂绑定

一个控件容纳多条记录。


D.    分析操作生成的内容

private void tb_UserBindingNavigatorSaveItem_Click(object sender, EventArgs e)
{
    this.Validate();
    this.tb_UserBindingSource.EndEdit();
    this.tableAdapterManager.UpdateAll(this.userDataSet);
}

private void Form2_Load(object sender, EventArgs e)
{
    // TODO: This line of code loads data into the 'userDataSet.tb_User' table. You can move, or remove it, as needed.
    this.tb_UserTableAdapter.Fill(this.userDataSet.tb_User);
}


其他设置与简单绑定类似。

2.    WPF

A.    操作

一个控件容纳一条记录。

A.    分析操作生成的内容

前台XAML代码:

<Window x:Class="WpfApplication1.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525" xmlns:my="clr-namespace:WpfApplication1" Loaded="Window_Loaded">
    <Window.Resources>
        <my:UserDataSet x:Key="userDataSet" />
        <CollectionViewSource x:Key="tb_UserViewSource" Source="{Binding Path=tb_User, Source={StaticResource userDataSet}}" />
    </Window.Resources>
    <Grid>
        <Grid DataContext="{StaticResource tb_UserViewSource}" HorizontalAlignment="Left" Margin="72,56,0,0" Name="grid1" VerticalAlignment="Top">
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="Auto" />
                <ColumnDefinition Width="Auto" />
            </Grid.ColumnDefinitions>
            <Grid.RowDefinitions>
                <RowDefinition Height="Auto" />
                <RowDefinition Height="Auto" />
            </Grid.RowDefinitions>
            <Label Content="Username:" Grid.Column="0" Grid.Row="0" HorizontalAlignment="Left" Margin="3" VerticalAlignment="Center" />
            <TextBox Grid.Column="1" Grid.Row="0" Height="23" HorizontalAlignment="Left" Margin="3" Name="usernameTextBox" Text="{Binding Path=Username, Mode=TwoWay, ValidatesOnExceptions=true, NotifyOnValidationError=true}" VerticalAlignment="Center" Width="120" />
            <Label Content="password:" Grid.Column="0" Grid.Row="1" HorizontalAlignment="Left" Margin="3" VerticalAlignment="Center" />
            <TextBox Grid.Column="1" Grid.Row="1" Height="23" HorizontalAlignment="Left" Margin="3" Name="passwordTextBox" Text="{Binding Path=password, Mode=TwoWay, ValidatesOnExceptions=true, NotifyOnValidationError=true}" VerticalAlignment="Center" Width="120" />
        </Grid>
    </Grid>
</Window>

说明:CollectionViewSource是CollectionView,包装数据源的包装器,可以使WPF应用程序方便浏览数据源。

后台代码:

private void Window_Loaded(object sender, RoutedEventArgs e)
{
    WpfApplication1.UserDataSet userDataSet = ((WpfApplication1.UserDataSet)(this.FindResource("userDataSet")));
    // Load data into the table tb_User. You can modify this code as needed.
    WpfApplication1.UserDataSetTableAdapters.tb_UserTableAdapter userDataSettb_UserTableAdapter = new WpfApplication1.UserDataSetTableAdapters.tb_UserTableAdapter();
    userDataSettb_UserTableAdapter.Fill(userDataSet.tb_User);
    System.Windows.Data.CollectionViewSource tb_UserViewSource = ((System.Windows.Data.CollectionViewSource)(this.FindResource("tb_UserViewSource")));
    tb_UserViewSource.View.MoveCurrentToFirst();
}

前台手动添加四个导航按键:

<Button Content="First" Grid.Column="0" Click="First_Click" />
<Button Content="Previous" Grid.Column="1" Click="Previous_Click" />
<Button Content="Next" Grid.Column="2" Click="Next_Click" />
<Button Content="Last" Grid.Column="3" Click="Last_Click" />

编写导航事件处理代码:

private void First_Click(object sender, RoutedEventArgs e)
{
    CollectionViewSource source = (CollectionViewSource)this.FindResource("tb_UserViewSource");
    source.View.MoveCurrentToFirst();
}

private void Previous_Click(object sender, RoutedEventArgs e)
{
    CollectionViewSource source = (CollectionViewSource)this.FindResource("tb_UserViewSource");
    source.View.MoveCurrentToPrevious();
}

private void Next_Click(object sender, RoutedEventArgs e)
{
    CollectionViewSource source = (CollectionViewSource)this.FindResource("tb_UserViewSource");
    source.View.MoveCurrentToNext();
}

private void Last_Click(object sender, RoutedEventArgs e)
{
    CollectionViewSource source = (CollectionViewSource)this.FindResource("tb_UserViewSource");
    source.View.MoveCurrentToLast();
}

注意:这种绑定,数据是只读的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值