參考網頁: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"/>)