public GenResult Gen(params object[] sqlElements) { #region Init GenResult gr; View t = (View)sqlElements[0]; List <Column> pks = Utils.GetPrimaryKeyColumns(t); if (pks.Count == 0) { gr = new GenResult(GenResultTypes.Message); gr.Message = "无法为没有主键字段的视图生成该UI代码!"; return(gr); } List <Column> wcs = Utils.GetWriteableColumns(t); List <Column> socs = Utils.GetSortableColumns(t); List <Column> sacs = Utils.GetSearchableColumns(t); string tbn = Utils.GetEscapeName(t); StringBuilder sb = new StringBuilder(); #endregion #region Gen Import sb.Remove(0, sb.Length); sb.Append(@" xmlns:data=""clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Data"" xmlns:localprimitives=""clr-namespace:System.Windows.Controls.Primitives;assembly=System.Windows.Controls.Data"" xmlns:dataGridColumnHeadTemplate=""clr-namespace:ColumnHeadTemplate"" "); string result_import = sb.ToString(); #endregion #region Gen Style sb.Remove(0, sb.Length); sb.Append(@" <UserControl.Resources> <!-- DataGrid Controls Container --> <Style x:Key=""DataGridControlsContainer"" TargetType=""Grid""> <Setter Property=""Margin"" Value=""5 5 5 5"" /> </Style> <!-- DataGrid Toolbar --> <Style x:Key=""DataGridToolbar"" TargetType=""StackPanel""> </Style> <Style x:Key=""DataGridToolBarButtons"" TargetType=""Button""> <Setter Property=""Padding"" Value=""15 0 15 0"" /> <Setter Property=""Margin"" Value=""0 0 5 0"" /> <Setter Property=""FontSize"" Value=""12"" /> <Setter Property=""Height"" Value=""22"" /> </Style> <Style x:Key=""DataGridToolbarTextBlocks"" TargetType=""TextBlock""> <Setter Property=""FontSize"" Value=""12"" /> <Setter Property=""VerticalAlignment"" Value=""Center"" /> <Setter Property=""Margin"" Value=""0 0 2 0"" /> </Style> <!-- DataGrid Toolbar Right --> <Style x:Key=""DataGridToolbarRight"" TargetType=""StackPanel""> </Style> <Style x:Key=""DataGridToolBarRightButtons"" TargetType=""Button""> <Setter Property=""Padding"" Value=""15 0 15 0"" /> <Setter Property=""Margin"" Value=""5 0 0 0"" /> <Setter Property=""FontSize"" Value=""12"" /> <Setter Property=""Height"" Value=""22"" /> </Style> <Style x:Key=""DataGridToolbarRightTextBlocks"" TargetType=""TextBlock""> <Setter Property=""FontSize"" Value=""12"" /> <Setter Property=""VerticalAlignment"" Value=""Center"" /> <Setter Property=""Margin"" Value=""2 0 0 0"" /> </Style> <Style x:Key=""DataGridToolbarRightComboBoxes"" TargetType=""ComboBox""> <Setter Property=""FontSize"" Value=""12"" /> <Setter Property=""VerticalAlignment"" Value=""Center"" /> <Setter Property=""Margin"" Value=""2 0 0 0"" /> </Style> <!-- DataGrid --> <Style x:Key=""DataGrid"" TargetType=""data:DataGrid""> </Style> <Style x:Key=""DataGridRows"" TargetType=""data:DataGridRow""> <!-- <Setter Property=""Height"" Value=""25"" /> ---> </Style> <Style x:Key=""DataGridColumnHeaders"" TargetType=""localprimitives:DataGridColumnHeader""> <Setter Property=""Template""> <Setter.Value> <ControlTemplate TargetType=""localprimitives:DataGridColumnHeader""> <Grid> <dataGridColumnHeadTemplate:DataGridColumnHead Content=""{TemplateBinding Content}"" /> </Grid> </ControlTemplate> </Setter.Value> </Setter> </Style> <!-- DataGrid Pager --> <Style x:Key=""DataGridPager"" TargetType=""StackPanel""> </Style> <Style x:Key=""DataGridPagerButtons"" TargetType=""Button""> <Setter Property=""Padding"" Value=""15 0 15 0"" /> <Setter Property=""Margin"" Value=""0 0 5 0"" /> <Setter Property=""FontSize"" Value=""12"" /> <Setter Property=""Height"" Value=""22"" /> </Style> <Style x:Key=""DataGridPagerTextBlocks"" TargetType=""TextBlock""> <Setter Property=""FontSize"" Value=""12"" /> <Setter Property=""VerticalAlignment"" Value=""Center"" /> <Setter Property=""Margin"" Value=""0 0 2 0"" /> </Style> <Style x:Key=""DataGridPagerTextBoxes"" TargetType=""TextBox""> <Setter Property=""FontSize"" Value=""12"" /> <Setter Property=""VerticalAlignment"" Value=""Center"" /> <Setter Property=""Margin"" Value=""0 0 5 0"" /> <Setter Property=""FontSize"" Value=""12"" /> <Setter Property=""Height"" Value=""22"" /> <Setter Property=""Width"" Value=""35"" /> <Setter Property=""BorderBrush""> <Setter.Value> <SolidColorBrush Color=""Silver""></SolidColorBrush> </Setter.Value> </Setter> </Style> </UserControl.Resources> "); string result_style = sb.ToString(); #endregion #region Gen XAML sb.Remove(0, sb.Length); sb.Append(@" <!-- " + tbn + @" --> <Grid Style=""{StaticResource DataGridControlsContainer}""> <RowDefinition Height=""22"" /> <RowDefinition Height=""5"" /> <RowDefinition Height=""*"" /> <RowDefinition Height=""5"" /> <RowDefinition Height=""22"" /> </Grid.RowDefinitions> <Grid.ColumnDefinitions> <ColumnDefinition Width=""*"" /> <ColumnDefinition Width=""*"" /> <ColumnDefinition Width=""10"" /> <ColumnDefinition Width=""0.2*""/> </Grid.ColumnDefinitions> <!-- " + tbn + @" 查询 -->"); sb.Append(@" <Border Grid.ColumnSpean=""2""> <Grid> <Grid.ColumnDefinitions> <ColumnDefinition Width=""*"" /> <ColumnDefinition Width=""auto"" /> </Grid.ColumnDefinitions> <Grid.RowDefinitions>"); int count = t.Columns.Count / 2 + 1; for (int i = 0; i < count; i++) { sb.Append(@" <RowDefinition Height =""Auto""/> "); } sb.Append(@" </Grid.RowDefinitions>"); int rowindex = 0; foreach (Column c in t.Columns) { string cn = Utils.GetEscapeName(c); string caption = Utils.GetCaption(c); if (Utils.CheckIsStringType(c) || Utils.CheckIsNumericType(c) || Utils.CheckIsDateTimeType(c) || Utils.CheckIsGuidType(c)) { sb.Append(@" <StackPanel Margin=""0,5,5,0"" Orientation=""Horizontal"" Grid.ColumnSpan=""1"" Grid.RowSpan=""1"" Grid.Row=""" + rowindex / 2 + @""" Grid.Column=""" + rowindex % 2 + @""" HorizontalAlignment=""Center"">"); sb.Append(@" <TextBlock Height=""Auto"" Width=""60"" Margin=""0,0,5,0"" Text=""" + caption + @":""/> <TextBox Height=""Auto"" Width=""150"" x:Name=""" + cn + @""" TextWrapping=""Wrap""/> </StackPanel>"); } else if (Utils.CheckIsBooleanType(c)) { sb.Append(@" <StackPanel Orientation=""Horizontal"" Grid.ColumnSpan=""1"" Grid.RowSpan=""1"" Grid.Row=""" + rowindex / 2 + @""" Grid.Column=""" + rowindex % 2 + @""" HorizontalAlignment=""Center"">"); sb.Append(@" <TextBlock Height=""Auto"" Width=""60"" Margin=""0,0,5,0"" Text=""" + caption + @":""/> <CheckBox Height=""Auto"" Width=""Auto"" x:Name=""" + cn + @"""/> </StackPanel>"); } else if (Utils.CheckIsBinaryType(c)) { // todo } rowindex++; } sb.Append(@"</Grid> </Border>"); sb.Append("<!-- " + tbn + @" DataGrid --> <data:DataGrid x:Name=""_" + tbn + @"_DataGrid"" Grid.Row=""2"" Grid.ColumnSpan=""2"" Style=""{StaticResource DataGrid}"" RowStyle=""{StaticResource DataGridRows}"" AutoGenerateColumns=""False"" SelectionMode=""Single"" HeadersVisibility=""All"" CanUserSortColumns=""False"" SelectionChanged=""_" + tbn + @"_DataGrid_SelectionChanged"" SizeChanged=""_" + tbn + @"_DataGrid_SizeChanged""> <data:DataGrid.Columns> <data:DataGridTemplateColumn CanUserSort=""False""> <data:DataGridTemplateColumn.HeaderStyle> <Style TargetType=""localprimitives:DataGridColumnHeader""> <Setter Property=""Template""> <Setter.Value> <ControlTemplate> <CheckBox Margin=""3 4 0 0"" IsThreeState=""False"" Loaded=""_" + tbn + @"_HeaderCheckBox_Loaded"" Checked=""_" + tbn + @"_HeaderCheckBox_Checked"" Unchecked=""_" + tbn + @"_HeaderCheckBox_Unchecked"" /> </ControlTemplate> </Setter.Value> </Setter> </Style> </data:DataGridTemplateColumn.HeaderStyle> <data:DataGridTemplateColumn.CellTemplate> <DataTemplate> <StackPanel Orientation=""Horizontal""> <CheckBox Tag=""{Binding}"" Margin=""3 4 0 0"" IsThreeState=""False"" Loaded=""_" + tbn + @"_RowCheckBox_Loaded"" Checked=""_" + tbn + @"_RowCheckBox_Checked"" Unchecked=""_" + tbn + @"_RowCheckBox_Checked"" /> </StackPanel> </DataTemplate> </data:DataGridTemplateColumn.CellTemplate> </data:DataGridTemplateColumn> <!-- 注: Column.Width 相关的值可以为 SizeToHeader, SizeToCells, Auto, n --> " ); foreach (Column c in t.Columns) { string cn = Utils.GetEscapeName(c); string caption = Utils.GetCaption(c); //if (string.IsNullOrEmpty(caption) || caption.Trim().Length == 0) caption = c.Name; //string rdonly = wcs.Contains(c) ? "" : @" ReadOnly=""True"""; //string sort = socs.Contains(c) ? (@" SortExpression=""" + cn + @"""") : ""; if (Utils.CheckIsStringType(c) || Utils.CheckIsNumericType(c) || Utils.CheckIsDateTimeType(c) || Utils.CheckIsGuidType(c)) { sb.Append(@" <data:DataGridTextColumn HeaderStyle=""{StaticResource DataGridColumnHeaders}"" CanUserSort=""False"" Header=""" + caption + @""" Width=""Auto"" MinWidth=""20"" Binding=""{Binding Path=" + cn + @"}"" />"); } else if (Utils.CheckIsBooleanType(c)) { sb.Append(@" <data:DataGridCheckBoxColumn HeaderStyle=""{StaticResource DataGridColumnHeaders}"" CanUserSort=""False"" Header=""" + caption + @""" Width=""Auto"" Binding=""{Binding Path=" + cn + @"}"""); if (c.Nullable) { sb.Append(@" IsThreeState=""True"""); } sb.Append(@" />"); } else if (Utils.CheckIsBinaryType(c)) { // todo } } sb.Append(@" </data:DataGrid.Columns> </data:DataGrid> <!-- " + tbn + @" Pager --> <StackPanel x:Name=""_" + tbn + @"_Pager_StackPanel"" Grid.Row=""4"" Grid.ColumnSpan=""2"" Style=""{StaticResource DataGridPager}"" Orientation=""Horizontal"" Height=""Auto""> <Button x:Name=""_" + tbn + @"_Pager_First_Button"" Content=""翻至首页"" Click=""_" + tbn + @"_Pager_First_Button_Click"" Style=""{StaticResource DataGridPagerButtons}""></Button> <Button x:Name=""_" + tbn + @"_Pager_Previous_Button"" Content=""上一页"" Click=""_" + tbn + @"_Pager_Previous_Button_Click"" Style=""{StaticResource DataGridPagerButtons}""></Button> <Button x:Name=""_" + tbn + @"_Pager_Next_Button"" Content=""下一页"" Click=""_" + tbn + @"_Pager_Next_Button_Click"" Style=""{StaticResource DataGridPagerButtons}""></Button> <Button x:Name=""_" + tbn + @"_Pager_Last_Button"" Content=""翻至尾页"" Click=""_" + tbn + @"_Pager_Last_Button_Click"" Style=""{StaticResource DataGridPagerButtons}""></Button> <TextBlock x:Name=""_" + tbn + @"_Pager_PageIndex_TextBlock"" Text=""页码:"" Style=""{StaticResource DataGridPagerTextBlocks}"" /> <TextBox x:Name=""_" + tbn + @"_Pager_PageIndex_TextBox"" TextChanged=""_" + tbn + @"_Pager_PageIndex_TextBox_TextChanged"" Style=""{StaticResource DataGridPagerTextBoxes}""></TextBox> <TextBlock x:Name=""_" + tbn + @"_Pager_PageCount_TextBlock"" Text=""总页数:"" Style=""{StaticResource DataGridPagerTextBlocks}"" /> <TextBox x:Name=""_" + tbn + @"_Pager_PageCount_TextBox"" IsReadOnly=""True"" Style=""{StaticResource DataGridPagerTextBoxes}""></TextBox> <TextBlock x:Name=""_" + tbn + @"_Pager_RowCount_TextBlock"" Text=""总行数:"" Style=""{StaticResource DataGridPagerTextBlocks}"" /> <TextBox x:Name=""_" + tbn + @"_Pager_RowCount_TextBox"" IsReadOnly=""True"" Style=""{StaticResource DataGridPagerTextBoxes}""></TextBox> </StackPanel> <StackPanel Grid.Column=""3"" Grid.RowSpan=""5"" Width=""500"" Height=""Auto"" Grid.ColumnSpan=""1"" > <StackPanel> <StackPanel.Background> <LinearGradientBrush EndPoint=""0.5,1"" StartPoint=""0.5,0""> <GradientStop Color=""#FFD6D6D6"" Offset=""0.326""/> <GradientStop Color=""#FFFFFFFF"" Offset=""0.33""/> </LinearGradientBrush> </StackPanel.Background> <TextBlock Text=""当前行操作"" Foreground=""#FF000000"" Height=""25"" FontSize=""20"" HorizontalAlignment=""Left"" ></TextBlock> <HyperlinkButton x:Name=""cc_" + tbn + @"_Toolbar_处理结果_未处理_Button"" Content=""未处理"" Click=""_" + tbn + @"_Toolbar_处理结果_未处理_Click""></HyperlinkButton> <HyperlinkButton x:Name=""cc_" + tbn + @"_Toolbar_处理结果_已处理_Button"" Content=""已处理"" Click=""_" + tbn + @"_Toolbar_处理结果_已处理_Click"" ></HyperlinkButton> <HyperlinkButton x:Name=""cc_" + tbn + @"_Toolbar_处理结果_正在处理_Button"" Content=""正在处理"" Click=""_" + tbn + @"_Toolbar_处理结果_已处理_Click""></HyperlinkButton> </StackPanel> <StackPanel Margin=""0,22,0,0"" > <StackPanel.Background> <LinearGradientBrush EndPoint=""0.5,1"" StartPoint=""0.5,0""> <GradientStop Color=""#FFD6D6D6"" Offset=""0.326""/> <GradientStop Color=""#FFFFFFFF"" Offset=""0.33""/> </LinearGradientBrush> </StackPanel.Background> <TextBlock Text=""勾选行操作"" Foreground=""#FF000000"" Height=""25"" FontSize=""20"" HorizontalAlignment=""Left"" ></TextBlock> <HyperlinkButton x:Name=""cc_" + tbn + @"_Most_Toolbar_处理结果_未处理_Button"" Content=""未处理"" Click=""_" + tbn + @"_Toolbar_处理结果_未处理_Click""></HyperlinkButton> <HyperlinkButton x:Name=""cc_" + tbn + @"_Most_Toolbar_处理结果_已处理_Button"" Content=""已处理"" Click=""_" + tbn + @"_Toolbar_处理结果_已处理_Click"" ></HyperlinkButton> <HyperlinkButton x:Name=""cc_" + tbn + @"_Most_Toolbar_处理结果_正在处理_Button"" Content=""正在处理"" Click=""_" + tbn + @"_Toolbar_处理结果_已处理_Click""></HyperlinkButton> </StackPanel> </StackPanel> <basics:GridSplitter Margin=""0,0,0,0"" Grid.Column=""2"" Grid.Row=""0"" Grid.RowSpan=""5"" HorizontalAlignment=""Stretch"" Grid.ColumnSpan=""1"" Background=""#FFBDBDBD"" HorizontalContentAlignment=""Stretch"" VerticalContentAlignment=""Stretch"" Cursor=""None""/> </Grid>" ); string result_xaml = sb.ToString(); #endregion #region Gen CS sb.Remove(0, sb.Length); sb.Append(@" #region Constructor DgWindows _dgWindiows; public Page() { InitializeComponent(); // 注册载入事件 this.Loaded += new RoutedEventHandler(Page_Loaded); // 扩展到全屏 this.Width = this.Height = double.NaN; // 隐藏多选 CheckBox this._" + tbn + @"_DataGrid.Columns[0].Visibility = Visibility.Collapsed; // 隐藏 ToolbarRight 的 Submit Button this._" + tbn + @"_ToolbarRight_Submit_Button.Visibility = Visibility.Collapsed; // 初始化下拉排序 ComboBox 的显示 this._" + tbn + @"_ToolbarRight_Sort_ComboBox.SelectedIndex = 0; // 令整个 DataGrid 只读 this._" + tbn + @"_DataGrid.IsReadOnly = true; // 初始化 DataGrid 显示行数 this." + tbn + @"_PageSize = 10; // 初始化按钮状态 this." + tbn + @"_EnsurePagerState(); } #endregion #region " + tbn + @" Service Client & Methods // /// <summary> // /// Service Client Instance // /// </summary> // private ServiceReference1.Service1Client _sc = new ServiceReference1.Service1Client(); private void Page_Loaded(object sender, RoutedEventArgs e) { // // 注册数据取回完毕事件 // this._sc.Get" + tbn + @"RowsCompleted += new EventHandler<ServiceReference1.Get" + tbn + @"RowsCompletedEventArgs>(sc_Get" + tbn + @"RowsCompleted); // // " + tbn + @"_GetData(); } // private void sc_Get" + tbn + @"RowsCompleted(object sender, ServiceReference1.Get" + tbn + @"RowsCompletedEventArgs e) // { // // 如果返回过程没中断, 结果没问题就 bind 显示 // if (!e.Cancelled && e.Error == null) // { // this." + tbn + @"_RowCount = e.Result.Count; // " + tbn + @"_EnsurePagerState(); // this._" + tbn + @"_DataGrid.ItemsSource = e.Result.Rows; // } // else // { // this." + tbn + @"_RowCount = 0; // " + tbn + @"_EnsurePagerState(); // this._" + tbn + @"_DataGrid.ItemsSource = null; // Utils.Window.Alert(e.Error.Message); // } // } /// <summary> /// 开始取回视图 " + tbn + @" 的数据 /// </summary> private void " + tbn + @"_GetData() { // int sortOrder = this._" + tbn + @"_ToolbarRight_Sort_ComboBox_GetSelectedSortOrder(); // this._sc.Get" + tbn + @"RowsAsync(this." + tbn + @"_PageIndex, this." + tbn + @"_PageSize, sortOrder); } #endregion #region _" + tbn + @"_HeaderCheckBox private CheckBox _" + tbn + @"_HeaderCheckBox; private void _" + tbn + @"_HeaderCheckBox_Loaded(object sender, RoutedEventArgs e) { this._" + tbn + @"_HeaderCheckBox = (CheckBox)sender; } private void _" + tbn + @"_HeaderCheckBox_Checked(object sender, RoutedEventArgs e) { foreach (CheckBox cb in this._" + tbn + @"_RowCheckBoxList) { cb.IsChecked = (sender as CheckBox).IsChecked; } } private void _" + tbn + @"_HeaderCheckBox_Unchecked(object sender, RoutedEventArgs e) { foreach (CheckBox cb in this._" + tbn + @"_RowCheckBoxList) { cb.IsChecked = (sender as CheckBox).IsChecked; } } #endregion #region _" + tbn + @"_RowCheckBoxList private List<CheckBox> _" + tbn + @"_RowCheckBoxList = new List<CheckBox>(); private void _" + tbn + @"_RowCheckBox_Loaded(object sender, RoutedEventArgs e) { this._" + tbn + @"_RowCheckBoxList.Add((CheckBox)sender); } private void _" + tbn + @"_RowCheckBox_Checked(object sender, RoutedEventArgs e) { // var o = (sender as CheckBox).Tag as ServiceReference1.xxxxxxxxxxxxxxxxx; // todo } private void _" + tbn + @"_RowCheckBox_Unchecked(object sender, RoutedEventArgs e) { // var o = (sender as CheckBox).Tag as ServiceReference1.xxxxxxxxxxxxxxxxx; // todo } #endregion #region _" + tbn + @"_Toolbar private void _cc" + tbn + @"_Toolbar_处理结果_未处理_Click(object sender, RoutedEventArgs e) { _dgWindiows = new DgWindows(); _dgWindiows.ShowModal(); //_sc.cc_玩家举报_处理状态_设为_未处理Async(SelectItem_OOcc_玩家举报.玩家举报编号, App.AdminID); cc" + tbn + @"_GetData(); } private void _cc" + tbn + @"_Toolbar_处理结果_已处理_Click(object sender, RoutedEventArgs e) { _dgWindiows = new DgWindows(); _dgWindiows.ShowModal(); //_sc.cc_玩家举报_处理状态_设为_已处理Async(SelectItem_OOcc_玩家举报.玩家举报编号, App.AdminID); cc" + tbn + @"_GetData(); } private void _cc" + tbn + @"_Toolbar_处理结果_正在处理_Click(object sender, RoutedEventArgs e) { _dgWindiows = new DgWindows(); _dgWindiows.ShowModal(); //_sc.cc_玩家举报_处理状态_设为_正在处理Async(SelectItem_OOcc_玩家举报.玩家举报编号, App.AdminID); cc" + tbn + @"_GetData(); } private void _cc" + tbn + @"_Most_Toolbar_处理结果_未处理_Click(object sender, RoutedEventArgs e) { _dgWindiows = new DgWindows(); _dgWindiows.ShowModal(); //_sc.cc_玩家举报_处理状态_设为_未处理Async(SelectItem_OOcc_玩家举报.玩家举报编号, App.AdminID); cc" + tbn + @"_GetData(); } private void _cc" + tbn + @"_Most_Toolbar_处理结果_已处理_Click(object sender, RoutedEventArgs e) { _dgWindiows = new DgWindows(); _dgWindiows.ShowModal(); //_sc.cc_玩家举报_处理状态_设为_已处理Async(SelectItem_OOcc_玩家举报.玩家举报编号, App.AdminID); cc" + tbn + @"_GetData(); } private void _cc" + tbn + @"_Most_Toolbar_处理结果_正在处理_Click(object sender, RoutedEventArgs e) { _dgWindiows = new DgWindows(); _dgWindiows.ShowModal(); //_sc.cc_玩家举报_处理状态_设为_正在处理Async(SelectItem_OOcc_玩家举报.玩家举报编号, App.AdminID); cc" + tbn + @"_GetData(); } // private int _" + tbn + @"_ToolbarRight_Sort_ComboBox_GetSelectedSortOrder() // { // ComboBoxItem cbi = _" + tbn + @"_ToolbarRight_Sort_ComboBox.SelectedItem as ComboBoxItem; // if (cbi == null) return 1; // return int.Parse(cbi.Tag as string); // } // // private void _" + tbn + @"_ToolbarRight_Sort_ComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e) // { // " + tbn + @"_GetData(); // // // todo: init ui codes here // } // // private void _" + tbn + @"_Toolbar_Refresh_Button_Click(object sender, RoutedEventArgs e) // { // " + tbn + @"_GetData(); // // // todo: init ui codes here // } // private void _" + tbn + @"_Toolbar_View_Button_Click(object sender, RoutedEventArgs e) // { // // todo: popup detail window & show selected row // } // // private void _" + tbn + @"_Toolbar_Insert_Button_Click(object sender, RoutedEventArgs e) // { // // todo: popup detail window & let user input data & save // } // // private void _" + tbn + @"_Toolbar_Edit_Button_Click(object sender, RoutedEventArgs e) // { // // todo: popup detail window & edit selected row & save // } // // private void _" + tbn + @"_Toolbar_Delete_Button_Click(object sender, RoutedEventArgs e) // { // // todo: popup confirm window, if result is True, delete row & get data & refresh display // } // // private void _" + tbn + @"_ToolbarRight_Submit_Button_Click(object sender, RoutedEventArgs e) // { // // todo: scan _" + tbn + @"_RowCheckBoxList & submit // } #endregion #region _" + tbn + @"_DataGrid private void _" + tbn + @"_DataGrid_SelectionChanged(object sender, SelectionChangedEventArgs e) { // todo: write some code here if needed } #endregion #region _" + tbn + @"_Pager public int " + tbn + @"_PageSize { get; set; } public int " + tbn + @"_PageCount { get; set; } public int " + tbn + @"_RowCount { get; set; } public int " + tbn + @"_PageIndex { get; set; } private void _" + tbn + @"_Pager_First_Button_Click(object sender, RoutedEventArgs e) { this." + tbn + @"_PageIndex = 0; this." + tbn + @"_EnsurePagerState(); this." + tbn + @"_GetData(); } private void _" + tbn + @"_Pager_Previous_Button_Click(object sender, RoutedEventArgs e) { this." + tbn + @"_PageIndex--; this." + tbn + @"_EnsurePagerState(); this." + tbn + @"_GetData(); } private void _" + tbn + @"_Pager_Next_Button_Click(object sender, RoutedEventArgs e) { this." + tbn + @"_PageIndex++; this." + tbn + @"_EnsurePagerState(); this." + tbn + @"_GetData(); } private void _" + tbn + @"_Pager_Last_Button_Click(object sender, RoutedEventArgs e) { this." + tbn + @"_PageIndex = int.MaxValue; this." + tbn + @"_EnsurePagerState(); this." + tbn + @"_GetData(); } private void _" + tbn + @"_Pager_PageIndex_TextBox_TextChanged(object sender, TextChangedEventArgs e) { int previousIndex = this." + tbn + @"_PageIndex; TextBox tb = (TextBox)sender; try { this." + tbn + @"_PageIndex = int.Parse(tb.Text) - 1; } catch { tb.Text = (previousIndex + 1).ToString(); } if (previousIndex != this." + tbn + @"_PageIndex) { this." + tbn + @"_EnsurePagerState(); this." + tbn + @"_GetData(); } } private void _" + tbn + @"_DataGrid_SizeChanged(object sender, SizeChangedEventArgs e) { // this." + tbn + @"_PageSize = ((int)e.NewSize.Height - 25) / 25; } public void " + tbn + @"_EnsurePagerState() { if (this." + tbn + @"_PageSize < 1) this." + tbn + @"_PageSize = 1; this." + tbn + @"_PageCount = this." + tbn + @"_RowCount / this." + tbn + @"_PageSize; if (this." + tbn + @"_RowCount % this." + tbn + @"_PageSize > 0) this." + tbn + @"_PageCount++; if (this." + tbn + @"_PageIndex >= this." + tbn + @"_PageCount) { this." + tbn + @"_PageIndex = this." + tbn + @"_PageCount - 1; } if (this." + tbn + @"_PageIndex < 0) this." + tbn + @"_PageIndex = 0; this._" + tbn + @"_Pager_PageCount_TextBox.Text = this." + tbn + @"_PageCount.ToString(); this._" + tbn + @"_Pager_RowCount_TextBox.Text = this." + tbn + @"_RowCount.ToString(); this._" + tbn + @"_Pager_PageIndex_TextBox.Text = (this." + tbn + @"_PageIndex + 1).ToString(); this._" + tbn + @"_Pager_First_Button.IsEnabled = false; this._" + tbn + @"_Pager_Previous_Button.IsEnabled = false; this._" + tbn + @"_Pager_Next_Button.IsEnabled = false; this._" + tbn + @"_Pager_Last_Button.IsEnabled = false; if (this." + tbn + @"_PageIndex > 0) { this._" + tbn + @"_Pager_First_Button.IsEnabled = true; this._" + tbn + @"_Pager_Previous_Button.IsEnabled = true; } if (this." + tbn + @"_PageIndex < this." + tbn + @"_PageCount - 1) { this._" + tbn + @"_Pager_Next_Button.IsEnabled = true; this._" + tbn + @"_Pager_Last_Button.IsEnabled = true; } } #endregion "); string result_cs = sb.ToString(); #endregion #region Gen Utils_CS sb.Remove(0, sb.Length); sb.Append(Gen_Utils_cs.Gen()); string result_utils_cs = sb.ToString(); #endregion #region return gr = new GenResult(GenResultTypes.CodeSegments); gr.CodeSegments = new List <KeyValuePair <string, string> >(); gr.CodeSegments.Add(new KeyValuePair <string, string>("SL DataGrid XAML Import:", result_import)); gr.CodeSegments.Add(new KeyValuePair <string, string>("SL DataGrid Style:", result_style)); gr.CodeSegments.Add(new KeyValuePair <string, string>("SL DataGrid XAML:", result_xaml)); gr.CodeSegments.Add(new KeyValuePair <string, string>("SL DataGrid CS:", result_cs)); gr.CodeSegments.Add(new KeyValuePair <string, string>("SL Utils CS:", result_utils_cs)); return(gr); #endregion }
public GenResult Gen(params object[] sqlElements) { #region Init GenResult gr; Table t = (Table)sqlElements[0]; List <Column> pks = Utils.GetPrimaryKeyColumns(t); if (pks.Count == 0) { gr = new GenResult(GenResultTypes.Message); gr.Message = "无法为没有主键字段的表生成该UI代码!"; return(gr); } List <Column> wcs = Utils.GetWriteableColumns(t); List <Column> socs = Utils.GetSortableColumns(t); List <Column> sacs = Utils.GetSearchableColumns(t); string tbn = Utils.GetEscapeName(t); StringBuilder sb = new StringBuilder(); #endregion #region Gen Import sb.Remove(0, sb.Length); sb.Append(@" xmlns:controls=""clr-namespace:Microsoft.Windows.Controls;assembly=Microsoft.Windows.Controls"" xmlns:basics=""clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls"" xmlns:data=""clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Data"" xmlns:localprimitives=""clr-namespace:System.Windows.Controls.Primitives;assembly=System.Windows.Controls.Data"" "); string result_import = sb.ToString(); #endregion #region Gen Style sb.Remove(0, sb.Length); sb.Append(@" <UserControl.Resources> <!-- DataGrid Controls Container --> <Style x:Key=""DataGridControlsContainer"" TargetType=""Grid""> <Setter Property=""Margin"" Value=""5 5 5 5"" /> </Style> <!-- DataGrid Toolbar --> <Style x:Key=""DataGridToolbar"" TargetType=""StackPanel""> </Style> <Style x:Key=""DataGridToolBarButtons"" TargetType=""Button""> <Setter Property=""Padding"" Value=""15 0 15 0"" /> <Setter Property=""Margin"" Value=""0 0 5 0"" /> <Setter Property=""FontSize"" Value=""12"" /> <Setter Property=""Height"" Value=""22"" /> </Style> <Style x:Key=""DataGridToolbarTextBlocks"" TargetType=""TextBlock""> <Setter Property=""FontSize"" Value=""12"" /> <Setter Property=""VerticalAlignment"" Value=""Center"" /> <Setter Property=""Margin"" Value=""0 0 2 0"" /> </Style> <!-- DataGrid Toolbar Right --> <Style x:Key=""DataGridToolbarRight"" TargetType=""StackPanel""> </Style> <Style x:Key=""DataGridToolBarRightButtons"" TargetType=""Button""> <Setter Property=""Padding"" Value=""15 0 15 0"" /> <Setter Property=""Margin"" Value=""5 0 0 0"" /> <Setter Property=""FontSize"" Value=""12"" /> <Setter Property=""Height"" Value=""22"" /> </Style> <Style x:Key=""DataGridToolbarRightTextBlocks"" TargetType=""TextBlock""> <Setter Property=""FontSize"" Value=""12"" /> <Setter Property=""VerticalAlignment"" Value=""Center"" /> <Setter Property=""Margin"" Value=""2 0 0 0"" /> </Style> <Style x:Key=""DataGridToolbarRightComboBoxes"" TargetType=""ComboBox""> <Setter Property=""FontSize"" Value=""12"" /> <Setter Property=""VerticalAlignment"" Value=""Center"" /> <Setter Property=""Margin"" Value=""2 0 0 0"" /> </Style> <!-- DataGrid --> <Style x:Key=""DataGrid"" TargetType=""data:DataGrid""> </Style> <Style x:Key=""DataGridRows"" TargetType=""data:DataGridRow""> <!-- <Setter Property=""Height"" Value=""25"" /> ---> </Style> <Style x:Key=""DataGridColumnHeaders"" TargetType=""localprimitives:DataGridColumnHeader""> <Setter Property=""Template""> <Setter.Value> <ControlTemplate TargetType=""localprimitives:DataGridColumnHeader""> <Grid> <this:DataGridColumnHead Content=""{TemplateBinding Content}"" /> </Grid> </ControlTemplate> </Setter.Value> </Setter> </Style> <!-- DataGrid Pager --> <Style x:Key=""DataGridPager"" TargetType=""StackPanel""> </Style> <Style x:Key=""DataGridPagerButtons"" TargetType=""Button""> <Setter Property=""Padding"" Value=""15 0 15 0"" /> <Setter Property=""Margin"" Value=""0 0 5 0"" /> <Setter Property=""FontSize"" Value=""12"" /> <Setter Property=""Height"" Value=""22"" /> </Style> <Style x:Key=""DataGridPagerTextBlocks"" TargetType=""TextBlock""> <Setter Property=""FontSize"" Value=""12"" /> <Setter Property=""VerticalAlignment"" Value=""Center"" /> <Setter Property=""Margin"" Value=""0 0 2 0"" /> </Style> <Style x:Key=""DataGridPagerTextBoxes"" TargetType=""TextBox""> <Setter Property=""FontSize"" Value=""12"" /> <Setter Property=""VerticalAlignment"" Value=""Center"" /> <Setter Property=""Margin"" Value=""0 0 5 0"" /> <Setter Property=""FontSize"" Value=""12"" /> <Setter Property=""Height"" Value=""22"" /> <Setter Property=""Width"" Value=""35"" /> <Setter Property=""BorderBrush""> <Setter.Value> <SolidColorBrush Color=""Silver""></SolidColorBrush> </Setter.Value> </Setter> </Style> </UserControl.Resources> "); string result_style = sb.ToString(); #endregion #region Gen XAML sb.Remove(0, sb.Length); sb.Append(@" <!-- " + tbn + @" --> <Grid Style=""{StaticResource DataGridControlsContainer}""> <Grid.RowDefinitions> <RowDefinition Height=""*"" /> <RowDefinition Height=""5"" /> <RowDefinition Height=""*"" /> <RowDefinition Height=""5"" /> <RowDefinition Height=""22"" /> </Grid.RowDefinitions> <Grid.ColumnDefinitions> <ColumnDefinition Width=""*"" /> <ColumnDefinition Width=""*"" /> <ColumnDefinition Width=""10"" /> <ColumnDefinition Width=""200""/> </Grid.ColumnDefinitions> <!-- " + tbn + @" 查询 -->"); sb.Append(@" <!-- cc_玩家举报 查询 --> <controls:WrapPanel x:Name=""ManualTextWrapping"" Orientation=""Horizontal"" Grid.ColumnSpan=""2"" >"); foreach (Column c in t.Columns) { string cn = Utils.GetEscapeName(c); string caption = Utils.GetCaption(c); if (Utils.CheckIsStringType(c)) { sb.Append(@" <StackPanel Margin=""0,5,5,0"" Orientation=""Horizontal"" HorizontalAlignment=""Center"">"); sb.Append(@" <TextBlock Height=""Auto"" Width=""100"" Margin=""0,0,5,0"" Text=""" + caption + @":""/> <TextBox Height=""Auto"" Width=""150"" x:Name=""" + cn + @""" TextWrapping=""Wrap""/> </StackPanel>"); } else if (Utils.CheckIsNumericType(c)) { sb.Append(@" <StackPanel Margin=""0,5,5,0"" Orientation=""Horizontal"" HorizontalAlignment=""Center"">"); sb.Append(@" <TextBlock Height=""Auto"" Width=""100"" Margin=""0,0,5,0"" Text=""" + caption + @":""/> <ComboBox x:Name=""" + cn + @""" HorizontalAlignment=""Left"" Width=""150"" /> <TextBox x:Name=""" + cn + @""" HorizontalAlignment=""Left"" Width=""150"" /> </StackPanel>"); } else if (Utils.CheckIsDateTimeType(c)) { sb.Append(@" <StackPanel Margin=""0,5,5,0"" Orientation=""Horizontal"" HorizontalAlignment=""Center"">"); sb.Append(@" <TextBlock Height=""Auto"" Width=""100"" Margin=""0,0,5,0"" Text=""" + caption + @":""/> <basics:DatePicker x:Name=""" + cn + @""" HorizontalAlignment=""Left"" Width=""150"" /> </StackPanel>"); } else if (Utils.CheckIsGuidType(c)) { } else if (Utils.CheckIsBooleanType(c)) { sb.Append(@" <StackPanel Orientation=""Horizontal"" HorizontalAlignment=""Center"">"); sb.Append(@" <TextBlock Height=""Auto"" Width=""100"" Margin=""0,0,5,0"" Text=""" + caption + @":""/> <CheckBox Height=""Auto"" Width=""Auto"" x:Name=""" + cn + @"""/> </StackPanel>"); } else if (Utils.CheckIsBinaryType(c)) { // todo } } sb.Append(@" <StackPanel Grid.ColumnSpan=""1"" Grid.RowSpan=""3"" Grid.Column=""4""> <Button Content=""提交查询"" ></Button> </StackPanel>"); sb.Append(@"</controls:WrapPanel> "); sb.Append("<!-- " + tbn + @" DataGrid --> <data:DataGrid x:Name=""_" + tbn + @"_DataGrid"" Grid.Row=""2"" RowBackground=""Cornsilk"" AlternatingRowBackground=""LemonChiffon"" Grid.ColumnSpan=""2"" Style=""{StaticResource DataGrid}"" RowStyle=""{StaticResource DataGridRows}"" AutoGenerateColumns=""False"" SelectionMode=""Single"" HeadersVisibility=""All"" CanUserSortColumns=""False"" KeyDown=""DataGrid_KeyDown"" SelectionChanged=""_" + tbn + @"_DataGrid_SelectionChanged"" SizeChanged=""_" + tbn + @"_DataGrid_SizeChanged""> <data:DataGrid.Columns> <data:DataGridTemplateColumn CanUserSort=""False""> <data:DataGridTemplateColumn.HeaderStyle> <Style TargetType=""localprimitives:DataGridColumnHeader""> <Setter Property=""Template""> <Setter.Value> <ControlTemplate> <CheckBox Margin=""3 4 0 0"" IsThreeState=""False"" Loaded=""_" + tbn + @"_HeaderCheckBox_Loaded"" Checked=""_" + tbn + @"_HeaderCheckBox_Checked"" Unchecked=""_" + tbn + @"_HeaderCheckBox_Unchecked"" /> </ControlTemplate> </Setter.Value> </Setter> </Style> </data:DataGridTemplateColumn.HeaderStyle> <data:DataGridTemplateColumn.CellTemplate> <DataTemplate> <StackPanel Orientation=""Horizontal""> <CheckBox Tag=""{Binding}"" Margin=""3 4 0 0"" IsThreeState=""False"" Loaded=""_" + tbn + @"_RowCheckBox_Loaded"" Checked=""_" + tbn + @"_RowCheckBox_Checked"" Unchecked=""_" + tbn + @"_RowCheckBox_Checked"" /> </StackPanel> </DataTemplate> </data:DataGridTemplateColumn.CellTemplate> </data:DataGridTemplateColumn> <!-- 注: Column.Width 相关的值可以为 SizeToHeader, SizeToCells, Auto, n --> " ); foreach (Column c in t.Columns) { string cn = Utils.GetEscapeName(c); string caption = Utils.GetCaption(c); //if (string.IsNullOrEmpty(caption) || caption.Trim().Length == 0) caption = c.Name; //string rdonly = wcs.Contains(c) ? "" : @" ReadOnly=""True"""; //string sort = socs.Contains(c) ? (@" SortExpression=""" + cn + @"""") : ""; if (Utils.CheckIsStringType(c) || Utils.CheckIsNumericType(c) || Utils.CheckIsDateTimeType(c) || Utils.CheckIsGuidType(c)) { sb.Append(@" <data:DataGridTextColumn HeaderStyle=""{StaticResource DataGridColumnHeaders}"" CanUserSort=""False"" Header=""" + caption + @""" Width=""Auto"" MinWidth=""20"" Binding=""{Binding Path=" + cn + @"}"" />"); } else if (Utils.CheckIsBooleanType(c)) { sb.Append(@" <data:DataGridCheckBoxColumn HeaderStyle=""{StaticResource DataGridColumnHeaders}"" CanUserSort=""False"" Header=""" + caption + @""" Width=""Auto"" Binding=""{Binding Path=" + cn + @"}"""); if (c.Nullable) { sb.Append(@" IsThreeState=""True"""); } sb.Append(@" />"); } else if (Utils.CheckIsBinaryType(c)) { // todo } } sb.Append(@" </data:DataGrid.Columns> </data:DataGrid> <!-- " + tbn + @" Pager --> <StackPanel x:Name=""_" + tbn + @"_Pager_StackPanel"" Grid.Row=""4"" Grid.ColumnSpan=""2"" Style=""{StaticResource DataGridPager}"" Orientation=""Horizontal"" Height=""Auto""> <Button x:Name=""_" + tbn + @"_Pager_First_Button"" Content=""翻至首页"" Click=""_" + tbn + @"_Pager_First_Button_Click"" Style=""{StaticResource DataGridPagerButtons}""></Button> <Button x:Name=""_" + tbn + @"_Pager_Previous_Button"" Content=""上一页"" Click=""_" + tbn + @"_Pager_Previous_Button_Click"" Style=""{StaticResource DataGridPagerButtons}""></Button> <Button x:Name=""_" + tbn + @"_Pager_Next_Button"" Content=""下一页"" Click=""_" + tbn + @"_Pager_Next_Button_Click"" Style=""{StaticResource DataGridPagerButtons}""></Button> <Button x:Name=""_" + tbn + @"_Pager_Last_Button"" Content=""翻至尾页"" Click=""_" + tbn + @"_Pager_Last_Button_Click"" Style=""{StaticResource DataGridPagerButtons}""></Button> <TextBlock x:Name=""_" + tbn + @"_Pager_PageIndex_TextBlock"" Text=""页码:"" Style=""{StaticResource DataGridPagerTextBlocks}"" /> <TextBox x:Name=""_" + tbn + @"_Pager_PageIndex_TextBox"" Style=""{StaticResource DataGridPagerTextBoxes}""></TextBox> <TextBlock x:Name=""_" + tbn + @"_Pager_PageCount_TextBlock"" Text=""总页数:"" Style=""{StaticResource DataGridPagerTextBlocks}"" /> <TextBox x:Name=""_" + tbn + @"_Pager_PageCount_TextBox"" IsReadOnly=""True"" Style=""{StaticResource DataGridPagerTextBoxes}""></TextBox> <TextBlock x:Name=""_" + tbn + @"_Pager_RowCount_TextBlock"" Text=""总行数:"" Style=""{StaticResource DataGridPagerTextBlocks}"" /> <TextBox x:Name=""_" + tbn + @"_Pager_RowCount_TextBox"" IsReadOnly=""True"" Style=""{StaticResource DataGridPagerTextBoxes}""></TextBox> </StackPanel> <StackPanel Grid.Column=""3"" Grid.RowSpan=""5"" Width=""500"" Height=""Auto"" Grid.ColumnSpan=""1"" > <StackPanel> <StackPanel.Background> <LinearGradientBrush EndPoint=""0.5,1"" StartPoint=""0.5,0""> <GradientStop Color=""#FFD6D6D6"" Offset=""0.326""/> <GradientStop Color=""#FFFFFFFF"" Offset=""0.33""/> </LinearGradientBrush> </StackPanel.Background> <TextBlock Text=""当前行操作"" Foreground=""#FF000000"" Height=""25"" FontSize=""20"" HorizontalAlignment=""Left"" ></TextBlock> <HyperlinkButton x:Name=""_" + tbn + @"_Toolbar_处理结果_拒绝_Button"" Content=""拒绝"" Click=""_" + tbn + @"_Toolbar_处理结果_拒绝_Click""></HyperlinkButton> <HyperlinkButton x:Name=""_" + tbn + @"_Toolbar_处理结果_未处理_Button"" Content=""未处理"" Click=""_" + tbn + @"_Toolbar_处理结果_未处理_Click""></HyperlinkButton> <HyperlinkButton x:Name=""_" + tbn + @"_Toolbar_处理结果_已处理_Button"" Content=""已处理"" Click=""_" + tbn + @"_Toolbar_处理结果_已处理_Click"" ></HyperlinkButton> <HyperlinkButton x:Name=""_" + tbn + @"_Toolbar_处理结果_正在处理_Button"" Content=""正在处理"" Click=""_" + tbn + @"_Toolbar_处理结果_已处理_Click""></HyperlinkButton> <HyperlinkButton x:Name=""" + tbn + @"_Toolbar_处理结果_填写处理结果_Button"" Content=""填写处理结果"" Click=""_" + tbn + @"_Toolbar_处理结果_填写处理结果_Button_Click""></HyperlinkButton> <HyperlinkButton x:Name=""" + tbn + @"_Toolbar_处理结果_查看历史变更日志_Button"" Content=""查看历史变更日志"" Click=""_" + tbn + @"_Toolbar_处理结果_查看历史变更日志_Button_Click""></HyperlinkButton> </StackPanel> <StackPanel Margin=""0,22,0,0"" x:Name=""MostCheck_StackPanel"" Visibility=""Collapsed""> <StackPanel.Background> <LinearGradientBrush EndPoint=""0.5,1"" StartPoint=""0.5,0""> <GradientStop Color=""#FFD6D6D6"" Offset=""0.326""/> <GradientStop Color=""#FFFFFFFF"" Offset=""0.33""/> </LinearGradientBrush> </StackPanel.Background> <TextBlock Text=""勾选行操作"" Foreground=""#FF000000"" Height=""25"" FontSize=""20"" HorizontalAlignment=""Left"" ></TextBlock> <HyperlinkButton x:Name=""_" + tbn + @"_Most_Toolbar_处理结果_拒绝_Button"" Content=""拒绝"" Click=""_" + tbn + @"_Most_Toolbar_处理结果_拒绝_Click""></HyperlinkButton> <HyperlinkButton x:Name=""_" + tbn + @"_Most_Toolbar_处理结果_未处理_Button"" Content=""未处理"" Click=""_" + tbn + @"_Most_Toolbar_处理结果_未处理_Click""></HyperlinkButton> <HyperlinkButton x:Name=""_" + tbn + @"_Most_Toolbar_处理结果_已处理_Button"" Content=""已处理"" Click=""_" + tbn + @"_Most_Toolbar_处理结果_已处理_Click"" ></HyperlinkButton> <HyperlinkButton x:Name=""_" + tbn + @"_Most_Toolbar_处理结果_正在处理_Button"" Content=""正在处理"" Click=""_" + tbn + @"_Most_Toolbar_处理结果_已处理_Click""></HyperlinkButton> </StackPanel> </StackPanel> <basics:GridSplitter Margin=""0,0,0,0"" Grid.Column=""2"" Grid.Row=""0"" Grid.RowSpan=""5"" HorizontalAlignment=""Stretch"" Grid.ColumnSpan=""1"" Background=""#FFBDBDBD"" HorizontalContentAlignment=""Stretch"" VerticalContentAlignment=""Stretch"" Cursor=""None""/> </Grid>" ); string result_xaml = sb.ToString(); #endregion #region Gen CS sb.Remove(0, sb.Length); sb.Append(@" #region Constructor // /// <summary> // /// Service Client Instance // /// </summary> // private SR_Admin.Service_AdminClient _sc = new SR_Admin.Service_AdminClient(); DataGrid _" + tbn + @"_处理结果变更日志_DataGrid; DataGrid _" + tbn + @"_处理状态变更日志_DataGrid; Telerik.Windows.Controls.RadWindow radWindow; Telerik.Windows.Controls.RadWindow changeWindow; TextBox resultContext; DgWindows _dgWindiows; public static int index = 1; public Bus_SL.SR_Admin.OO" + tbn + @" SelectItem_OO" + tbn + @" { get; set; } public Page() { InitializeComponent(); // 注册载入事件 this.Loaded += new RoutedEventHandler(Page_Loaded); // 扩展到全屏 this.Width = this.Height = double.NaN; ManualTextWrapping.Height = double.NaN; // 令整个 DataGrid 只读 this._" + tbn + @"_DataGrid.IsReadOnly = true; // 初始化 DataGrid 显示行数 this." + tbn + @"_PageSize = 10; this._" + tbn + @"_Pager_PageIndex_TextBox.TextChanged +=new TextChangedEventHandler(_" + tbn + @"_Pager_PageIndex_TextBox_TextChanged); // 初始化按钮状态 this." + tbn + @"_EnsurePagerState(); } #endregion #region " + tbn + @" Service Client & Methods private void Page_Loaded(object sender, RoutedEventArgs e) { // // 注册数据取回完毕事件 // this._sc." + tbn + @"_获取多条Completed += new EventHandler<ServiceReference1.Get" + tbn + @"RowsCompletedEventArgs>(sc_Get" + tbn + @"RowsCompleted); // this._sc.cc_处理状态_获取多条Completed +=new EventHandler<Bus_SL.SR_Admin.cc_处理状态_获取多条CompletedEventArgs>(_sc_cc_处理状态_获取多条Completed); this._sc." + tbn + @"_处理状态_修改Completed += new EventHandler<SR_Admin." + tbn + @"_处理状态_修改CompletedEventArgs>(_sc_" + tbn + @"_处理结果_修改Completed); // " + tbn + @"_GetData(1); } // void _sc_" + tbn + @"_处理结果_修改Completed(object sender, SR_Admin." + tbn + @"_处理状态_修改CompletedEventArgs e) // { // if(e.Result != null ) // { // Utils.Window.Alert(e.Result); // } // } // // // void _sc_cc_处理状态_获取多条Completed(object sender, Bus_SL.SR_Admin.cc_处理状态_获取多条CompletedEventArgs e) // { // // 如果返回过程没中断, 结果没问题显示 // if (!e.Cancelled && e.Error == null) // { // 处理状态编号.Items.Clear(); // foreach (var o in e.Result) // { // ComboBoxItem c = new ComboBoxItem(); // c.Tag = o.处理状态编号; // c.Content = o.状态名; // 处理状态编号.Items.Add(c); // } // 处理状态编号.SelectedIndex = 0; // } // } // private void sc_Get" + tbn + @"RowsCompleted(object sender, ServiceReference1." + tbn + @"_获取多条CompletedEventArgs e) // { // // 如果返回过程没中断, 结果没问题就 bind 显示 // if (!e.Cancelled && e.Error == null) // { // this." + tbn + @"_RowCount = e.Result.Count; // " + tbn + @"_EnsurePagerState(); // this._" + tbn + @"_DataGrid.ItemsSource = e.Result.Rows; // } // else // { // this." + tbn + @"_RowCount = 0; // " + tbn + @"_EnsurePagerState(); // this._" + tbn + @"_DataGrid.ItemsSource = null; // Utils.Window.Alert(e.Error.Message); // } // } /// <summary> /// 开始取回视图 " + tbn + @" 的数据 /// </summary> private void " + tbn + @"_GetData(int sortOrder) { // this._sc." + tbn + @"_获取多条Async(this." + tbn + @"_PageIndex, this." + tbn + @"_PageSize, sortOrder); // this._sc.cc_处理状态_获取多条Async(); } #endregion #region _" + tbn + @"_HeaderCheckBox private void _" + tbn + @"_HeaderCheckBox_Checked(object sender, RoutedEventArgs e) { foreach (CheckBox cb in this._" + tbn + @"_RowCheckBoxList) { cb.IsChecked = (sender as CheckBox).IsChecked; } } private void _" + tbn + @"_HeaderCheckBox_Unchecked(object sender, RoutedEventArgs e) { foreach (CheckBox cb in this._" + tbn + @"_RowCheckBoxList) { cb.IsChecked = (sender as CheckBox).IsChecked; } } #endregion #region _" + tbn + @"_RowCheckBoxList private List<CheckBox> _" + tbn + @"_RowCheckBoxList = new List<CheckBox>(); private void CheckBox_Loaded(object sender, RoutedEventArgs e) { this._" + tbn + @"_RowCheckBoxList.Add((CheckBox)sender); } private void _" + tbn + @"_RowCheckBox_Checked(object sender, RoutedEventArgs e) { foreach (CheckBox c in _" + tbn + @"_RowCheckBoxList) { if (c == (CheckBox)sender) { c.IsChecked = ((CheckBox)sender).IsChecked; } } " + tbn + @"_EnsureStackPanelState(); } private void _" + tbn + @"_RowCheckBox_Unchecked(object sender, RoutedEventArgs e) { foreach (CheckBox c in _" + tbn + @"_RowCheckBoxList) { if (c == (CheckBox)sender) { c.IsChecked = ((CheckBox)sender).IsChecked; } } " + tbn + @"_EnsureStackPanelState(); } #endregion #region _" + tbn + @"_Toolbar private void _" + tbn + @"_Toolbar_处理结果_拒绝_Click(object sender, RoutedEventArgs e) { _dgWindiows = new DgWindows(); _dgWindiows.ShowModal(); _sc." + tbn + @"_处理状态_修改Async(SelectItem_OO" + tbn + @".xxxx, App.AdminID, 1); " + tbn + @"_GetData(index); } private void _" + tbn + @"_Toolbar_处理结果_未处理_Click(object sender, RoutedEventArgs e) { _dgWindiows = new DgWindows(); _dgWindiows.ShowModal(); _sc." + tbn + @"_处理状态_修改Async(SelectItem_OO" + tbn + @".xxx, App.AdminID, 0); " + tbn + @"_GetData(index); } private void _" + tbn + @"_Toolbar_处理结果_已处理_Click(object sender, RoutedEventArgs e) { _dgWindiows = new DgWindows(); _dgWindiows.ShowModal(); _sc." + tbn + @"_处理状态_修改Async(SelectItem_OO" + tbn + @".xxx, App.AdminID, 3); " + tbn + @"_GetData(index); } private void _" + tbn + @"_Toolbar_处理结果_正在处理_Click(object sender, RoutedEventArgs e) { _dgWindiows = new DgWindows(); _dgWindiows.ShowModal(); _sc." + tbn + @"_处理状态_修改Async(SelectItem_OO" + tbn + @".xxxx, App.AdminID,2); " + tbn + @"_GetData(index); } private void _" + tbn + @"_Most_Toolbar_处理结果_未处理_Click(object sender, RoutedEventArgs e) { _dgWindiows = new DgWindows(); _dgWindiows.ShowModal(); foreach (CheckBox cb in this._" + tbn + @"_RowCheckBoxList) { if (cb.IsChecked == true) { _sc." + tbn + @"_处理状态_修改Async(((Bus_SL.SR_Admin.OO" + tbn + @")cb.Tag).xxxx, App.AdminID, 0); } } " + tbn + @"_GetData(index); } private void _" + tbn + @"_Most_Toolbar_处理结果_拒绝_Click(object sender, RoutedEventArgs e) { _dgWindiows = new DgWindows(); _dgWindiows.ShowModal(); foreach (CheckBox cb in this._" + tbn + @"_RowCheckBoxList) { if (cb.IsChecked == true) { _sc." + tbn + @"_处理状态_修改Async(((Bus_SL.SR_Admin.OO" + tbn + @")cb.Tag).xxxx, App.AdminID, 1); } } " + tbn + @"_GetData(index); } private void _" + tbn + @"_Most_Toolbar_处理结果_已处理_Click(object sender, RoutedEventArgs e) { _dgWindiows = new DgWindows(); _dgWindiows.ShowModal(); foreach (CheckBox cb in this._" + tbn + @"_RowCheckBoxList) { if (cb.IsChecked == true) { _sc." + tbn + @"_处理状态_修改Async(((Bus_SL.SR_Admin.OO" + tbn + @")cb.Tag).xxxx, App.AdminID, 3); } } " + tbn + @"_GetData(index); } private void _" + tbn + @"Most_Toolbar_处理结果_正在处理_Click(object sender, RoutedEventArgs e) { _dgWindiows = new DgWindows(); _dgWindiows.ShowModal(); foreach (CheckBox cb in this._" + tbn + @"_RowCheckBoxList) { if (cb.IsChecked == true) { _sc." + tbn + @"_处理状态_修改Async(((Bus_SL.SR_Admin.OO" + tbn + @")cb.Tag).xxxx, App.AdminID, 2); } } " + tbn + @"_GetData(index); } /// <summary> /// 提交查询 /// </summary> private void _" + tbn + @"_ToolbarRight_Submit_Button_Click(object sender, RoutedEventArgs e) { } private void _" + tbn + @"_Toolbar_处理结果_填写处理结果_Button_Click(object sender, RoutedEventArgs e) { StackPanel stackPanel= new StackPanel(); TextBlock textblock = new TextBlock (); textblock.Text =""处理结果:""; resultContext = new TextBox(); resultContext.TextWrapping = TextWrapping.Wrap; resultContext.Width = 400; resultContext.Height = 400; Button btn = new Button (); btn.Width = 100; btn .Content = ""确认""; btn.Click += new RoutedEventHandler(btn_Click); stackPanel.Children.Add(textblock); stackPanel.Children.Add(resultContext); stackPanel.Children.Add(btn); radWindow = Utils.Window.Create(500, 550, ""玩家xxx处理界面"", stackPanel); radWindow.ResizeMode = Telerik.Windows.Controls.ResizeMode.NoResize; radWindow.ShowDialog(); } void btn_Click(object sender, RoutedEventArgs e) { _sc." + tbn + @"_处理结果_设为Async(SelectItem_OO" + tbn + @".xxxx, App.AdminID, resultContext.Text); radWindow.Close(); } #endregion #region _" + tbn + @"_DataGrid private void _" + tbn + @"_DataGrid_SelectionChanged(object sender, SelectionChangedEventArgs e) { if (e.AddedItems.Count != 0) { SelectItem_OO" + tbn + @"= (Bus_SL.SR_Admin.OO" + tbn + @")e.AddedItems[0]; } } private void _" + tbn + @"_Toolbar_处理结果_查看历史变更日志_Button_Click(object sender, RoutedEventArgs e) { Grid _grid = new Grid(); RowDefinition R1 = new RowDefinition(); R1.Height = new GridLength(20); RowDefinition R2 = new RowDefinition(); R2.Height = new GridLength(670); ColumnDefinition C1 = new ColumnDefinition(); C1.Width = new GridLength(450); ColumnDefinition C2 = new ColumnDefinition(); C2.Width = new GridLength(450); _grid.RowDefinitions.Add(R1); _grid.RowDefinitions.Add(R2); _grid.ColumnDefinitions.Add(C1); _grid.ColumnDefinitions.Add(C2); Button CloseWindow = new Button(); CloseWindow.Content = ""关闭界面""; _" + tbn + @"_处理状态变更日志_DataGrid = new DataGrid(); _" + tbn + @"_处理状态变更日志_DataGrid.AutoGenerateColumns = false; _" + tbn + @"_处理状态变更日志_DataGrid.SelectionMode = DataGridSelectionMode.Single; _" + tbn + @"_处理状态变更日志_DataGrid.HeadersVisibility = DataGridHeadersVisibility.All; Grid.SetRow(_" + tbn + @"_处理状态变更日志_DataGrid, 1); DataGridTextColumn dgt1 = new DataGridTextColumn(); dgt1.IsReadOnly = true; dgt1.Header = ""XXXX""; dgt1.Width = DataGridLength.Auto; dgt1.MinWidth = 20; Binding b1 = new Binding(""XXX""); dgt1.Binding = b1; DataGridTextColumn dgt2 = new DataGridTextColumn(); dgt2.IsReadOnly = true; dgt2.Header = ""处理状态编号""; dgt2.Width = DataGridLength.Auto; dgt2.MinWidth = 20; Binding b2 = new Binding(""处理状态编号""); b2.Converter = new StateValueConverter(); dgt2.Binding = b2; DataGridTextColumn dgt3 = new DataGridTextColumn(); dgt3.IsReadOnly = true; dgt3.Header = ""日志编号""; dgt3.Width = DataGridLength.Auto; dgt3.MinWidth = 20; Binding b3 = new Binding(""日志编号""); dgt3.Binding = b3; DataGridTextColumn dgt4 = new DataGridTextColumn(); dgt4.IsReadOnly = false; dgt4.Header = ""修改人编号""; dgt4.Width = DataGridLength.Auto; dgt4.MinWidth = 20; Binding b4 = new Binding(""修改人编号""); dgt4.Binding = b4; DataGridTextColumn dgt5 = new DataGridTextColumn(); dgt5.IsReadOnly = true; dgt5.Header = ""修改时间""; dgt5.Width = DataGridLength.Auto; dgt5.MinWidth = 20; Binding b5 = new Binding(""修改时间""); dgt5.Binding = b5; _" + tbn + @"_处理状态变更日志_DataGrid.Columns.Add(dgt1); _" + tbn + @"_处理状态变更日志_DataGrid.Columns.Add(dgt2); _" + tbn + @"_处理状态变更日志_DataGrid.Columns.Add(dgt3); _" + tbn + @"_处理状态变更日志_DataGrid.Columns.Add(dgt4); _" + tbn + @"_处理状态变更日志_DataGrid.Columns.Add(dgt5); _" + tbn + @"_处理结果变更日志_DataGrid = new DataGrid(); _" + tbn + @"_处理结果变更日志_DataGrid.AutoGenerateColumns = false; _" + tbn + @"_处理结果变更日志_DataGrid.SelectionMode = DataGridSelectionMode.Single; _" + tbn + @"_处理结果变更日志_DataGrid.HeadersVisibility = DataGridHeadersVisibility.All; Grid.SetRow(_" + tbn + @"_处理结果变更日志_DataGrid, 1); Grid.SetColumn(_" + tbn + @"_处理结果变更日志_DataGrid, 1); DataGridTextColumn dgt6 = new DataGridTextColumn(); dgt6.IsReadOnly = true; dgt6.Header = ""xxx""; dgt6.Width = DataGridLength.Auto; dgt6.MinWidth = 20; Binding b6 = new Binding(""xxxx""); dgt6.Binding = b6; DataGridTextColumn dgt7 = new DataGridTextColumn(); dgt7.IsReadOnly = true; dgt7.Header = ""处理结果""; dgt7.Width = DataGridLength.Auto; dgt7.MinWidth = 20; Binding b7 = new Binding(""处理结果""); dgt7.Binding = b7; DataGridTextColumn dgt8 = new DataGridTextColumn(); dgt8.IsReadOnly = true; dgt8.Header = ""日志编号""; dgt8.Width = DataGridLength.Auto; dgt8.MinWidth = 20; Binding b8 = new Binding(""日志编号""); dgt8.Binding =b8; DataGridTextColumn dgt9 = new DataGridTextColumn(); dgt9.IsReadOnly = true; dgt9.Header = ""修改人编号""; dgt9.Width = DataGridLength.Auto; dgt9.MinWidth = 20; Binding b9 = new Binding(""修改人编号""); dgt9.Binding = b9; DataGridTextColumn dgt10 = new DataGridTextColumn(); dgt10.IsReadOnly = true; dgt10.Header = ""修改时间""; dgt10.Width = DataGridLength.Auto; dgt10.MinWidth = 20; Binding b10 = new Binding(""修改时间""); dgt10.Binding = b10; _" + tbn + @"_处理结果变更日志_DataGrid.Columns.Add(dgt6); _" + tbn + @"_处理结果变更日志_DataGrid.Columns.Add(dgt7); _" + tbn + @"_处理结果变更日志_DataGrid.Columns.Add(dgt8); _" + tbn + @"_处理结果变更日志_DataGrid.Columns.Add(dgt9); _" + tbn + @"_处理结果变更日志_DataGrid.Columns.Add(dgt10); _grid.Children.Add(CloseWindow); _grid.Children.Add(_" + tbn + @"_处理状态变更日志_DataGrid); _grid.Children.Add(_" + tbn + @"_处理结果变更日志_DataGrid); this._sc." + tbn + @"_处理状态变更日志_获取多条Completed += new EventHandler<" + tbn + @"_处理状态变更日志_获取多条CompletedEventArgs>(_sc_" + tbn + @"_处理状态变更日志_获取多条Completed); this._sc." + tbn + @"_处理结果变更日志_获取多条Completed += new EventHandler<" + tbn + @"_处理结果变更日志_获取多条CompletedEventArgs>(_sc_" + tbn + @"_处理结果变更日志_获取多条Completed); _sc." + tbn + @"_处理状态变更日志_获取多条Async(SelectItem_OO" + tbn + @".XXX); _sc." + tbn + @"_处理结果变更日志_获取多条Async(SelectItem_OO" + tbn + @"XXX); changeWindow = Utils.Window.Create(900, 700, ""XXX查看历史界面"", _grid); changeWindow.ResizeMode = Telerik.Windows.Controls.ResizeMode.NoResize; changeWindow.ShowDialog(); CloseWindow.Click += new RoutedEventHandler(CloseWindow_Click); } void _sc_" + tbn + @"_处理状态变更日志_获取多条Completed(object sender," + tbn + @"_处理状态变更日志_获取多条CompletedEventArgs e) { _" + tbn + @"_处理状态变更日志_DataGrid.ItemsSource = e.Result; } void _sc_" + tbn + @"_处理结果变更日志_获取多条Completed(object sender," + tbn + @"_处理结果变更日志_获取多条CompletedEventArgs e) { _" + tbn + @"_处理结果变更日志_DataGrid.ItemsSource = e.Result; } void CloseWindow_Click(object sender, RoutedEventArgs e) { changeWindow.Hide(); changeWindow.Close(); } /// <summary> /// 当选中行,通过键盘空格控制勾选该行 /// </summary> private void DataGrid_KeyDown(object sender, KeyEventArgs e) { if (e.Key == Key.Space) { DataGrid dg =(DataGrid)sender; foreach (CheckBox c in _" + tbn + @"_RowCheckBoxList) { if (c.DataContext == dg.SelectedItem) { c.IsChecked = !c.IsChecked; } } } } #endregion #region _" + tbn + @"_Pager public int " + tbn + @"_PageSize { get; set; } public int " + tbn + @"_PageCount { get; set; } public int " + tbn + @"_RowCount { get; set; } public int " + tbn + @"_PageIndex { get; set; } private void _" + tbn + @"_Pager_First_Button_Click(object sender, RoutedEventArgs e) { this." + tbn + @"_PageIndex = 0; this." + tbn + @"_EnsurePagerState(); this." + tbn + @"_GetData(index); } private void _" + tbn + @"_Pager_Previous_Button_Click(object sender, RoutedEventArgs e) { this." + tbn + @"_PageIndex--; this." + tbn + @"_EnsurePagerState(); this." + tbn + @"_GetData(index); } private void _" + tbn + @"_Pager_Next_Button_Click(object sender, RoutedEventArgs e) { this." + tbn + @"_PageIndex++; this." + tbn + @"_EnsurePagerState(); this." + tbn + @"_GetData(index); } private void _" + tbn + @"_Pager_Last_Button_Click(object sender, RoutedEventArgs e) { this." + tbn + @"_PageIndex = int.MaxValue; this." + tbn + @"_EnsurePagerState(); this." + tbn + @"_GetData(index); } private void _" + tbn + @"_Pager_PageIndex_TextBox_TextChanged(object sender, TextChangedEventArgs e) { int previousIndex = this." + tbn + @"_PageIndex; TextBox tb = (TextBox)sender; try { this." + tbn + @"_PageIndex = int.Parse(tb.Text) - 1; } catch { tb.Text = (previousIndex + 1).ToString(); } if (previousIndex != this." + tbn + @"_PageIndex) { this." + tbn + @"_EnsurePagerState(); this." + tbn + @"_GetData(index); } } private void _" + tbn + @"_DataGrid_SizeChanged(object sender, SizeChangedEventArgs e) { // this." + tbn + @"_PageSize = ((int)e.NewSize.Height - 25) / 25; } public void " + tbn + @"_EnsurePagerState() { if (this." + tbn + @"_PageSize < 1) this." + tbn + @"_PageSize = 1; this." + tbn + @"_PageCount = this." + tbn + @"_RowCount / this." + tbn + @"_PageSize; if (this." + tbn + @"_RowCount % this." + tbn + @"_PageSize > 0) this." + tbn + @"_PageCount++; if (this." + tbn + @"_PageIndex >= this." + tbn + @"_PageCount) { this." + tbn + @"_PageIndex = this." + tbn + @"_PageCount - 1; } if (this." + tbn + @"_PageIndex < 0) this." + tbn + @"_PageIndex = 0; this._" + tbn + @"_Pager_PageCount_TextBox.Text = this." + tbn + @"_PageCount.ToString(); this._" + tbn + @"_Pager_RowCount_TextBox.Text = this." + tbn + @"_RowCount.ToString(); this._" + tbn + @"_Pager_PageIndex_TextBox.Text = (this." + tbn + @"_PageIndex + 1).ToString(); this._" + tbn + @"_Pager_First_Button.IsEnabled = false; this._" + tbn + @"_Pager_Previous_Button.IsEnabled = false; this._" + tbn + @"_Pager_Next_Button.IsEnabled = false; this._" + tbn + @"_Pager_Last_Button.IsEnabled = false; if (this." + tbn + @"_PageIndex > 0) { this._" + tbn + @"_Pager_First_Button.IsEnabled = true; this._" + tbn + @"_Pager_Previous_Button.IsEnabled = true; } if (this." + tbn + @"_PageIndex < this." + tbn + @"_PageCount - 1) { this._" + tbn + @"_Pager_Next_Button.IsEnabled = true; this._" + tbn + @"_Pager_Last_Button.IsEnabled = true; } } public void " + tbn + @"_EnsureStackPanelState() { bool isVisibility = false; foreach (CheckBox c in this._" + tbn + @"_RowCheckBoxList) { isVisibility |= (bool)c.IsChecked; } if (isVisibility == true) { MostCheck_StackPanel.Visibility = Visibility.Visible; } else { MostCheck_StackPanel.Visibility = Visibility.Collapsed; } } #endregion "); string result_cs = sb.ToString(); #endregion #region Gen Utils_CS sb.Remove(0, sb.Length); sb.Append(Gen_Utils_cs.Gen()); string result_utils_cs = sb.ToString(); #endregion #region Gen_Utils_Custom sb.Remove(0, sb.Length); sb.Append(Gen_Utils_custom.Gen()); string result_utils_custom = sb.ToString(); #endregion #region return gr = new GenResult(GenResultTypes.CodeSegments); gr.CodeSegments = new List <KeyValuePair <string, string> >(); gr.CodeSegments.Add(new KeyValuePair <string, string>("SL DataGrid XAML Import:", result_import)); gr.CodeSegments.Add(new KeyValuePair <string, string>("SL DataGrid Style:", result_style)); gr.CodeSegments.Add(new KeyValuePair <string, string>("SL DataGrid XAML:", result_xaml)); gr.CodeSegments.Add(new KeyValuePair <string, string>("SL DataGrid CS:", result_cs)); gr.CodeSegments.Add(new KeyValuePair <string, string>("SL Utils CS:", result_utils_cs)); gr.CodeSegments.Add(new KeyValuePair <string, string>("SL DataGrid Custom Control", result_utils_custom)); return(gr); #endregion }