参考网页:http://www.cnblogs.com/fwbnet/archive/2012/05/08/2490974.html
最近在学习WPF的知识,来园子里写写自己的学习心得,也为了更好的加深印象,以后如果有需要还可以过来翻翻。
一、DataGrid数据绑定
前台代码
<Grid x:Name="grid1"> <Grid.RowDefinitions> <RowDefinition Height ="50"/> <RowDefinition Height="*"/> </Grid.RowDefinitions> <Grid.ColumnDefinitions> <ColumnDefinition Width="0.3*"/> <ColumnDefinition Width="0.4*"/> <ColumnDefinition Width="10"/> <ColumnDefinition Width="100"/> <ColumnDefinition Width="10"/> <ColumnDefinition Width="100"/> <ColumnDefinition Width="10"/> <ColumnDefinition Width="100"/> <ColumnDefinition Width="0.1*"/> </Grid.ColumnDefinitions> <Label x:Name="label1" Content="小区:" Grid.Row="0" Grid.Column="0" HorizontalAlignment="Right" VerticalAlignment="Center" Height="30" Width="80"/> <ComboBox x:Name="comboBox1" SelectedIndex="-1" Grid.Row="0" Grid.Column="1" Width="100" Height="30" HorizontalAlignment="Left" VerticalAlignment="Center"/> <Button x:Name="button1" Content="查询" Grid.Row="0" Grid.Column="3" Margin="0,5"/> <Button x:Name="addBtn" Content="数据添加" Grid.Row="0" Grid.Column="5" Margin="0,5" /> <Button x:Name="deleteBtn" Content="删除" Grid.Row="0" Grid.Column="7" Margin="0,5" /> <DataGrid x:Name="dataGrid1" AutoGenerateColumns="False" Grid.Row="1" Grid.Column="0" Grid.ColumnSpan="9" Margin="0,0" CanUserAddRows="False" RowEditEnding="dataGrid1_RowEditEnding"> <DataGrid.Columns> <DataGridTemplateColumn Header="选中" Width="40"> <DataGridTemplateColumn.CellTemplate> <DataTemplate> <CheckBox></CheckBox> </DataTemplate> </DataGridTemplateColumn.CellTemplate> </DataGridTemplateColumn> <DataGridTextColumn Header="房间ID" Width="80" Binding="{Binding Room_id, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/> <DataGridTextColumn Header="设备ip" Width="80" Binding="{Binding Device_ip, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/> <DataGridTextColumn Header="申请人姓名" Width="80" Binding="{Binding Sqrxm, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/> <DataGridTextColumn Header="房屋坐落" Width="80" Binding="{Binding Fwzl, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/> <DataGridTextColumn Header="配租开始时间" Width="80" Binding="{Binding Pzkssj, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/> <DataGridTextColumn Header="配租结束时间" Width="80" Binding="{Binding Pzjssj, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/> <DataGridTextColumn Header="付款状态" Width="80" Binding="{Binding Kfzt, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/> <DataGridTextColumn Header="最后缴费时间戳" Width="80" Binding="{Binding Oa_lastpaydate, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/> <DataGridTextColumn Header="退租状态" Width="80" Binding="{Binding Checkout_state, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/> <DataGridTextColumn Header="退租时间" Width="80" Binding="{Binding Checkout_time, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/> <DataGridTemplateColumn Header="操作" Width="40"> <DataGridTemplateColumn.CellTemplate> <DataTemplate> <Button Content="处理" Click="WorkBtn_Click"/> </DataTemplate> </DataGridTemplateColumn.CellTemplate> </DataGridTemplateColumn> </DataGrid.Columns> </DataGrid> </Grid>
效果:
后台代码
这个是按钮点击事件
private void Button_Click(object sender, RoutedEventArgs e) { DataSet ds = new DataSet(); ds = SqlHelper.GetInfo(); List<EquipAlarm> equipAlarms = Tool_ViewModel.GetEquipAlarms(ds); dataGrid1.ItemsSource = equipAlarms; //数据绑定 }
SqlHelper.GetInfo():
class SqlHelper { public static DataSet GetInfo() { string mySQLConStr = “Data Source=localhost;Database=database;User Id=root;Password=123456”; //MySQL连接字符串 MySqlConnection mySqlCon = new MySqlConnection(mySQLConStr); try { mySqlCon.Open(); //打开数据库连接 string sql = "select * from table1"; MySqlDataAdapter mySqlAdap = new MySqlDataAdapter(sql, mySqlCon); DataSet ds = new DataSet(); ds.Clear(); mySqlAdap.Fill(ds); return ds; } catch (Exception) { throw; } finally { if (mySqlCon.State == ConnectionState.Open) { mySqlCon.Close(); } } } }
EquipAlarm 实体类,不多说了
Tool_ViewModel.GetEquipAlarms(ds) 将数据表的数据装换到实体类中
一些小的细节:
1、DataGrid的所有列都是默认可编辑的,如果要设置某列不能编辑——IsReadOnly属性(<DataGridTextColumn Width="80" IsReadOnly="True"/>)