本文目錄一覽:
- 1、如何自定義datagrid的header
- 2、winform如何通過php執行sql語句並將結果綁定到datagridview
- 3、數據庫中的數據在easyui datagrid中展示 出現問題 求PHP大神解決
- 4、如何在DataGrid控件中實現編輯,刪除,分類
如何自定義datagrid的header
具體實現的過程:
第一步,我們要做一個新的ColumnHeader。這裡直接用來silverlight.net上一位高手的代碼,並且做了擴展,主要是添加了Header的點擊事件和過濾框的事件,
以及一個新的屬性用來保存字段名。應為在實際的項目中,我們不可能在Grid上直接顯示數據庫的字段名,而是要用中文來顯示。代碼不是太複雜,就不做解釋了。
GridHeader.cs
1 [TemplatePart(Name = GridHeader.HeaderTextElement, Type = typeof(FrameworkElement))]
2 [TemplatePart(Name = GridHeader.FilterTextElement, Type = typeof(TextBox))]
3 public class GridHeader : Control
4 {
5 public delegate void HeaderClickEvent(string fieldname);
6 public event HeaderClickEvent OnSort;
7
8 public delegate void FilterTextEvent(string fieldname, string filtertext);
9 public event FilterTextEvent OnFilter;
10
11 protected const string HeaderTextElement = “btnHeaderText”;
12 protected const string FilterTextElement = “txtFilerText”;
13
14 Button btn_header;
15 TextBox filterText;
16
17 #region Constructor
18 public GridHeader()
19 {
20 this.DefaultStyleKey = typeof(GridHeader);
21 }
22 #endregion
23
24 #region HeaderText
25 /// summary
26 /// Identifies the HeaderText dependency property.
27 /// /summary
28 public static readonly DependencyProperty HeaderTextProperty = DependencyProperty.Register(“HeaderText”, typeof(string), typeof(GridHeader), null);
29
30 /// summary
31 /// Gets or sets the HeaderText possible Value of the int object.
32 /// /summary
33 public string HeaderText
34 {
35 get { return (string)GetValue(HeaderTextProperty); }
36 set { SetValue(HeaderTextProperty, value); }
37 }
38 #endregion HeaderText
39
40 #region FilterText
41
42 /// summary
43 /// Identifies the FilterText dependency property.
44 /// /summary
45 public static readonly DependencyProperty FilterTextProperty = DependencyProperty.Register(“FilterText”, typeof(string), typeof(GridHeader), null);
46
47 /// summary
48 /// Gets or sets the FilterText possible Value of the string object.
49 /// /summary
50 public string FilterText
51 {
52 get { return (string)GetValue(FilterTextProperty); }
53 set { SetValue(FilterTextProperty, value); }
54 }
55 #endregion FilterText
56
57 #region FieldText
58 public static DependencyProperty FieldTextProperty = DependencyProperty.Register(“FieldText”, typeof(string), typeof(GridHeader), null);
59 public string FieldText
60 {
61 get { return (string)GetValue(FieldTextProperty); }
62 set { SetValue(FieldTextProperty, value); }
63 }
64
65 #endregion
66
67 public override void OnApplyTemplate()
68 {
69 base.OnApplyTemplate();
70 StackPanel sp = this.GetTemplateChild(“LayoutRoot”) as StackPanel;
71
72 btn_header = sp.Children[0] as Button;
73 filterText = sp.Children[1] as TextBox;
74
75 if (this.filterText != null)
76 this.filterText.LostFocus += new RoutedEventHandler(filterText_LostFocus);
77 if (this.btn_header != null)
78 this.btn_header.Click += new RoutedEventHandler(header_Click);
79 }
80
81 void header_Click(object sender, RoutedEventArgs e)
82 {
83 OnSort(FieldText);
84 }
85
86 void filterText_LostFocus(object sender, RoutedEventArgs e)
87 {
88 OnFilter(FieldText, filterText.Text.Trim());
89 }
90
第二步,在Themes下添加一個Generic.xaml,內容如下:
ResourceDictionary
xmlns=””
xmlns:x=””
xmlns:controls=”clr-namespace:SilverlightDemoApp;assembly=SilverlightDemoApp”
Style TargetType=”controls:GridHeader”
Setter Property=”Template”
Setter.Value
ControlTemplate TargetType=”controls:GridHeader”
StackPanel x:Name=”LayoutRoot” Background=”{TemplateBinding Background}”
Button x:Name=”btnHeaderText” Margin=”0″ BorderThickness=”0″ Content=”{TemplateBinding HeaderText}”/Button
TextBox x:Name=”txtFilterTextBox” Margin=”1,0,1,1″ Text=”{TemplateBinding FilterText}”/
/StackPanel
/ControlTemplate
/Setter.Value
/Setter
/Style
/ResourceDictionary
這裡定義了我們自定義的ColumnHeader的展現方式,包括用了一個Button和TextBox。
關於Generic.xaml我不是太明白這個文件,有些人說會自動產生這個文件,但是我的機器上並沒有這個文件,我是手工添加的,現建一個themes下建一個 SilverLight用戶控件,然後用上面的內容替換掉自動生成的內容,並且去掉Generic.xaml.cs的public Generic()裏面的代碼。
第三步,在DataGrid頁面上添加Resources。如下:
UserControl.Resources
Style x:Key=”grid-header” TargetType=”primitives:DataGridColumnHeader”
Setter Property=”VerticalAlignment” Value=”Center” /
Setter Property=”HorizontalAlignment” Value=”Stretch” /
Setter Property=”Template”
Setter.Value
ControlTemplate
my:GridHeader HeaderText=”{TemplateBinding Content}” Height=”Auto” Loaded=”GridHeader_Loaded” /
/ControlTemplate
/Setter.Value
/Setter
/Style
/UserControl.Resources
注意,要在文件頭部加上
xmlns:my=”clr-namespace:SilverlightDemoApp;assembly=SilverlightDemoApp”
就是這個my:GridHeader的namespace和assembly信息。不然就找不到my:GridHeader的了。
第四步,實現DataGrid所在頁面的代碼。
基礎的代碼可以見我的前一篇文檔。
Silverlight學習筆記二:DataGrid 服務器端分頁、排序的實現
Silverlight學習筆記二(續)
這裡主要寫一下修改的地方
xaml中的DataGrid部分。
Code
在獲取數據之後,對DataGrid的Header進行了處理。新增了CreateHeader()這個方法。
1 private void client_GetProductsPagingCompleted(object sender, GetProductsPagingCompletedEventArgs e)
2 {
3 if (e.Error == null)
4 {
5 products_list = e.Result.ToList();
6 dgData.ItemsSource = products_list;
7 if (pager == null)
8 {
9 pager = new Pager(e.TotalPage, 2);
10 pager.Click += new Pager.PagerButtonClick(pager_Click);
11 pager.PageIndex = 1;
12 spPager.Children.Clear();
13 spPager.Children.Add(pager);
14 //第一次時創建GridHeader
15 CreateHeader();
16 }
17 }
18 else
19 MessageBox.Show(e.Error.Message);
20 canvas.Visibility = Visibility.Collapsed;
21 }
22
23 //用來存儲HeaderText和數據庫字段之間的對照信息
24 Dictionarystring, string FieldDict = new Dictionarystring, string();
25 private void CreateHeader()
26 {
27 var v = from p in dgData.Columns
28 where p is DataGridBoundColumn
29 select p;
30 foreach (DataGridBoundColumn column in v.ToList())
31 {
32 string fieldname = column.Binding.Path.Path;
33 Style style_header = Resources[“grid-header”] as Style;
34 column.HeaderStyle = style_header;
35
36 //本來這裡我是希望可以直接設置Header的FieldText為字段名的,但是卻找不到什麼好的方法,
37 //
38 //my:GridHeader HeaderText=”{TemplateBinding Content}” Height=”Auto” Loaded=”GridHeader_Loaded” /
39 //Resources中這裡也不能直接綁定FieldText為Binding.Path.Path,因為這裡是從DataGridColumnHeader來的,
40 //DataGridColumnHeader只有Content,而找不到對應的綁定信息。
41 //
42 //另外,通過訪問Style的Setter,我也只能獲取到ControlTemplate,但是ControlTemplate下面的內容,也就是my:GridHeader取怎麼也獲取不到,
43 //如果有高人知道,請指教一下。謝謝
44 //
45 //所以,沒辦法,只能暫時把字段名和HeaderText都保存到Dictionary裏面,供後面使用
46
47 FieldDict.Add(column.Header.ToString(), fieldname);
48 }
49 }
50
51 private void GridHeader_Loaded(object sender, RoutedEventArgs e)
52 {
53 GridHeader header = sender as GridHeader;
54 header.OnFilter += new GridHeader.FilterTextEvent(header_OnFilter);
55 header.OnSort += new GridHeader.HeaderClickEvent(header_OnSort);
56 string fieldtext;
57 //在這裡,我們對Header的FieldText設置為字段名。
58 //如果能在這裡獲取到當前的Column的話,前面就不要用Dictionary了,但是這裡我仍然不知道該怎麼獲取到當前的Column。
59 if (FieldDict.TryGetValue(header.HeaderText, out fieldtext))
60 header.FieldText = fieldtext;
61 }
62
63 void header_OnSort(string fieldname)
64 {
65 //這裡具體的代碼就不寫了。
66 //在獲取到字段名之後,對數據進行排序。
67 MessageBox.Show(“對字段:” + fieldname + “進行排序”);
68 }
69
70 void header_OnFilter(string fieldname, string filtertext)
71 {
72 //這裡具體的代碼就不寫了。
73 //在獲取到字段名和關鍵字只有,就可以通過WCF獲取到指定的數據了。
74 MessageBox.Show(“對字段:” + fieldname + ” 按照 ” + filtertext + ” 進行過濾”);
75 }
winform如何通過php執行sql語句並將結果綁定到datagridview
你的想法錯了吧,不應該這樣子的。。。
.net 可以連接任何數據庫的,為什麼不直接自己連接並執行而要通過 PHP 調用?
如果是想調用遠程的,你可以將 php 程序做成一個 類似於 web services 的東西,返回 XML 格式的數據,這樣就可以綁定了。
在PHP 程序里執行 SQL ,然後返回指定格式的 XML 數據,再將 XML 綁定到你的控件中
數據庫中的數據在easyui datagrid中展示 出現問題 求PHP大神解決
jQuery easyUI一般不會有問題的,有問題的都是自己的js代碼!是不是你渲染datagrid的代碼出現問題的,可以貼出來看看嘛?
如何在DataGrid控件中實現編輯,刪除,分類
一、DataGrid控件用來顯示若干行數據信息,通常這些信息是從數據庫中讀取出來的。對DataGrid控件的每一行都可以進行編輯,刪除,查看等等操作,操作實際是對數據庫的更新。
這裡需要搞清楚:1.如何獲得所操作行的每一個列的具體內容;2. 針對哈飛的項目,如何進行刪除操作;
具體代碼:
…………
private void MyDataGrid_ItemCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
if(e.CommandName == “ToDelete”)
{
/*獲取DataGrid列表中所選定行的各個列的文本信息,由於每一行前面有「編輯」和「更新」兩個按鈕,佔用了Cell[0]和Cell[1],因此,數據信息從Cell[2]開始,有幾列就以此類推*/
//獲取信息列各個單元格信息
string deleteTitle = e.Item.Cells[2].Text.ToString();
string deletePerson = e.Item.Cells[3].Text.ToString();
string deleteDate = e.Item.Cells[4].Text.ToString();
string deleteContent = e.Item.Cells[5].Text.ToString();
//書寫squery語句,格式要根據PL/SQL中package bodies中定義的格式書寫
string sQuery = “call
Prc_Hfnews.P_MODIFY(‘D’,'”+deleteTitle+”‘,'”+deletePerson+”‘,'”+deleteDate+”‘,'”+deleteContent+”‘,'”+NewsType+”‘,:arg_e_code,:arg_e_msg)”;
string ret_str = GeneralCommon.GF_Ms_ExecSql (sQuery);
if (ret_str== “OK”)//刪除成功
{
Response.Write(“script language=javascriptalert(‘OK!成功刪除!’)/script”);
}
else //刪除失敗
{
Response.Write(“script language=javascriptalert(‘Sorry!刪除失敗!’)/script”);
}
}
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/155128.html