Fork me on GitHub

ListView(二)

 绑定数据库

早就想用WPF把数据库中的内容填到页面上,今天终于实了,这就把关键部分贴出来,一来记录,二来分享。

如果用Expression Blend来编译,先把System.Data命名空间添加到References中来。

先看CS代码,System.Data的路径为“系统安装盘下\WINDOWS\Microsoft.NET\Framework\v2.0.50727

CS代码中基本与普通C#代码一样,不同之处就在myListBox.DataContext = myDataSet;,指明myListBox的数据来源为myDataSet

CS代码:

DataSet myDataSet;

        private void OnClick(object sender, EventArgs e)

        {

            string connString = "server=localhost;Initial catalog=NorthWind;user ID=sa;password=sa;";

            SqlConnection conn = new SqlConnection(connString);

            string sql;

            if (text.Text.Trim() != "")

            {

                sql="SELECT * FROM Employees where EmployeeID='" + text.Text + "'";

            }

            else

            {

                sql= "SELECT * FROM Employees";

 

            }

            SqlDataAdapter adapter = new SqlDataAdapter(sql, conn);

            myDataSet = new DataSet();

            adapter.Fill(myDataSet, "EmployeeTable");

            myListBox.DataContext = myDataSet;

        }

XAML代码中,ItemsSource="{Binding Path= EmployeeTable }"用来说明ListView子项Items的数据源为myDataSet中的EmployeeTable(因为在CS代码中已指明了myListBox的数据源是myDataSet)。接下来是分别设子项的绑定的字段。<GridViewColumn DisplayMemberBinding= "{Binding Path=EmployeeID}" Width="100" Header="Employee ID"/>从这行代码可以看来增加了一个列,列显示是“Emlpoyee ID”,指向数据库中的EmployeeID字段。

 <ListView Name="myListBox" ItemsSource="{Binding Path= EmployeeTable }" Margin="172.51,61,159.388,155" RenderTransformOrigin="0.5,0.5" BorderThickness="2,2,2,0" OpacityMask="{x:Null}" ForceCursor="True" OverridesDefaultStyle="False" Background="#7273C0EC" BorderBrush="#00FFFFFF" Foreground="#FFFFFFFF">          

            <ListView.View>

                            <GridView AllowsColumnReorder="true"        ColumnHeaderToolTip="Employee Information">

                                   <GridViewColumn DisplayMemberBinding=

                                "{Binding Path=EmployeeID}" Width="100" Header="Employee ID"/>

                   <GridViewColumn DisplayMemberBinding=

                                "{Binding Path=FirstName}"

                             Header="First Name" Width="100"/>

                  <GridViewColumn DisplayMemberBinding=

                                "{Binding Path=LastName}"

                            Header="Last Name" Width="100"/>

                   <GridViewColumn DisplayMemberBinding=

                                "{Binding Path=Title}"

                            Header="Title" Width="100"/>

                            </GridView>

                     </ListView.View>

         <ListView.RenderTransform>

                <TransformGroup>

                       <ScaleTransform ScaleX="1" ScaleY="1"/>

                       <SkewTransform AngleX="0.723" AngleY="0"/>

                       <RotateTransform Angle="0"/>

                       <TranslateTransform X="-23.513" Y="0"/>

                </TransformGroup>

         </ListView.RenderTransform>

              </ListView>

运行效果为:(Button的玻璃效果和ListVies的倒影效果没附出代码)

 

posted @ 2007-04-04 15:06  桂素伟  阅读(2415)  评论(2编辑  收藏  举报