ASP.net 自定义控件GridView
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了ASP.net 自定义控件GridView,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含60343字,纯文字阅读大概需要87分钟。
内容图文
1 using System; 2 using System.Web.UI; 3 using System.Web.UI.WebControls; 4 using System.Web.UI.HtmlControls; 5 using System.Collections; 6 using System.Collections.Generic; 7 using System.Text; 8 using System.Web.UI.Design; 9 using System.ComponentModel; 10 using SILK2010; 11 using System.Reflection; 12 using System.Web; 13 14 15 16 namespace FrameWorkV4.Controls 17 { 18 public class SMQGridView : System.Web.UI.WebControls.GridView 19 { 20 #region Private Property 21privateint dataCout; 22privateint DataCount 23 { 24get 25 { 26if (dataCout == 0 && DataSource != null) 27 { 28if (DataSource is IEnumerable) 29 { 30 IEnumerable DataSourceList = (IEnumerable)DataSource; 31 IEnumerator enumerator = DataSourceList.GetEnumerator(); 32 enumerator.Reset(); 33while (enumerator.MoveNext()) 34 { 35 dataCout++; 36 } 37 } 38if (DataSource is IListSource) 39 { 40 IListSource DataSourceList = (IListSource)DataSource; 41 IList list = DataSourceList.GetList(); 42 dataCout = list.Count; 43 } 44 } 45return dataCout; 46 } 47 } 48privateint FirstPageIndex 49 { 50get 51 { 52return0; 53 } 54 } 55privateint PreviosPageIndex 56 { 57get 58 { 59return Math.Max(PageIndex - 1, 0); 60 } 61 } 62privateint NextPageIndex 63 { 64get 65 { 66return Math.Min(PageIndex + 1, PageCount - 1); 67 } 68 } 69privateint LastPageIndex 70 { 71get 72 { 73return PageCount - 1; 74 } 75 } 76//Added by tony at 2010.12.16 77privateint TotalDataCount 78 { 79get 80 { 81object o = ViewState["TotalDataCount"]; 82int _dataCout = 0; 83if (o != null) 84 { 85 _dataCout = int.Parse(o.ToString()); 86 } 87return _dataCout; 88 } 89set 90 { 91 ViewState["TotalDataCount"] = value; 92 } 93 } 94#endregion 95 96#region Public Property 97publicstring OrderByField 98 { 99get 100 { 101object o = ViewState["OrderByField"]; 102if (o == null) 103 { 104for (int i = 0; i < Columns.Count; i++) 105 { 106if (Columns[i].SortExpression.Trim() != string.Empty) 107return Columns[i].SortExpression; 108 } 109returnstring.Empty; 110 } 111return (string)o; 112 } 113set 114 { 115 ViewState["OrderByField"] = value; 116 } 117 } 118publicbool OrderByAsc 119 { 120get 121 { 122object o = ViewState["OrderByAsc"]; 123if (o == null) 124 { 125returntrue; 126 } 127return (bool)o; 128 } 129set 130 { 131 ViewState["OrderByAsc"] = value; 132 } 133 } 134publicstring EntityType; 135publicstring PrimaryKeyName; 136publicstring GridViewName; 137privatebool showSaveChangesButton 138 { 139get 140 { 141foreach (DataControlField field in Columns) 142 { 143if (field is SMQGridViewField) 144returntrue; 145 } 146returnfalse; 147 } 148 } 149#endregion 150 151 152privatebool _isSaveChange = true; 153publicbool _IsSaveChange 154 { 155get 156 { 157return _isSaveChange; 158 } 159set 160 { 161 _isSaveChange = value; 162 } 163 164 } 165 166 167//Added by tony at 2010.12.16 168publicoverrideobject DataSource 169 { 170get 171 { 172returnbase.DataSource; 173 } 174set 175 { 176base.DataSource = value; 177int _dataCout = 0; 178if (value is IEnumerable) 179 { 180 IEnumerable DataSourceList = (IEnumerable)value; 181 IEnumerator enumerator = DataSourceList.GetEnumerator(); 182 enumerator.Reset(); 183while (enumerator.MoveNext()) 184 { 185 _dataCout++; 186 } 187 } 188if (value is IListSource) 189 { 190 IListSource DataSourceList = (IListSource)DataSource; 191 IList list = DataSourceList.GetList(); 192 _dataCout = list.Count; 193 } 194 TotalDataCount = _dataCout; 195 } 196 } 197 198privatebool _isAllowSaveChange = false; 199 200 201 202publicbool IsAllowSaveChange 203 { 204get { return _isAllowSaveChange; } 205set { _isAllowSaveChange = value; } 206 } 207 208 209privatebool _alwaysShowSaveChange = true; 210 211publicbool AlwaysShowSaveChange 212 { 213get { return _alwaysShowSaveChange; } 214set { _alwaysShowSaveChange = value; } 215 } 216privatebool _isAllowAllEdit = false; 217 218publicbool IsAllowAllEdit 219 { 220get { return _isAllowAllEdit; } 221set { _isAllowAllEdit = value; } 222 } 223 224privateint _gv_ProgramProductId; 225publicint GV_ProgramProductId 226 { 227get { return _gv_ProgramProductId; } 228set { _gv_ProgramProductId = value; } 229 } 230 231privatebool _isProductFeature = false; 232publicbool IsProductFeature 233 { 234get { return _isProductFeature; } 235set { _isProductFeature = value; } 236 } 237 238privatebool _isSweepCart = false; 239publicbool IsSweepCart 240 { 241get { return _isSweepCart; } 242set { _isSweepCart = value; } 243 } 244 245privatebool _isprogramproductordertype = false; 246publicbool IsProgramProductOrderType 247 { 248get 249 { 250return _isprogramproductordertype; 251 } 252set 253 { 254 _isprogramproductordertype = value; 255 } 256 } 257 258privatebool _isprogramproductcustomertype = false; 259 260publicbool IsProgramProductCustomerType 261 { 262get 263 { 264return _isprogramproductcustomertype; 265 } 266set 267 { 268 _isprogramproductcustomertype = value; 269 } 270 } 271 272privatebool _isReducePrice = false; 273publicbool IsReducePrice 274 { 275get { return _isReducePrice; } 276set { _isReducePrice = value; } 277 } 278 279privateint _programproductid = 0; 280publicint ProgramProductId 281 { 282get 283 { 284return _programproductid; 285 } 286set 287 { 288 _programproductid = value; 289 } 290 } 291 292privatebool _isAllowPage = true; 293publicbool IsAllowPage 294 { 295get { return _isAllowPage; } 296set { _isAllowPage = value; } 297 } 298 299 300privatebool _updateppstatus = false; 301publicbool UpdatePPStatus 302 { 303get 304 { 305return _updateppstatus; 306 } 307set 308 { 309 _updateppstatus = value; 310 } 311 } 312 313 314privatebool bHasRecord 315 { 316get 317 { 318try 319 { 320returnbool.Parse(ViewState["bHasRecord"].ToString()); 321 } 322catch 323 { 324returnfalse; 325 } 326 } 327set 328 { 329 ViewState["bHasRecord"] = value.ToString(); 330 } 331 } 332 333protectedoverridevoid OnDataBinding(EventArgs e) 334 { 335if (DataSource == null) 336 { 337base.OnDataBinding(e); 338return; 339 } 340 341var aa = DataSource as List<SILK2010.Entity>; 342if ((DataSource is SILK2010.EntityList) == false) 343 { 344base.OnDataBinding(e); 345return; 346 } 347 348 349 SILK2010.EntityList ds = DataSource as SILK2010.EntityList; 350if (!string.IsNullOrEmpty(OrderByField)) 351 { 352 ds.Sort(OrderByField, OrderByAsc); 353 } 354if (!string.IsNullOrEmpty(PrimaryKeyName)) 355 { 356this.DataKeyNames = newstring[1] { PrimaryKeyName }; 357 } 358if (!_isAllowPage) 359 { 360this.AllowPaging = false; 361 } 362else 363 { 364this.AllowPaging = true; 365 } 366 367if (ds.Count == 0) 368 { 369if (string.IsNullOrEmpty(this.EntityType)) 370 { 371return; 372 } 373 374 Assembly asmb = Assembly.LoadFrom(HttpContext.Current.Server.MapPath("~/Bin/ProTexusModel.dll")); 375 Entity entity = System.Activator.CreateInstance(asmb.GetType("ProTexus.Model." + EntityType)) as Entity; 376 377 ds.Add(entity); 378 379this.DataSource = ds; 380 381this.bHasRecord = false; 382 } 383else 384 { 385this.bHasRecord = true; 386 } 387base.OnDataBinding(e); 388 } 389 390privatevoid SetAdvancedPage(GridViewRowEventArgs e) 391 { 392 HtmlGenericControl prolistbottom = new HtmlGenericControl("DIV"); 393 e.Row.Cells[0].Controls.Add(prolistbottom); 394 prolistbottom.Attributes.Add("class", "prolistbottom textindent10"); 395 HtmlGenericControl floatleft = new HtmlGenericControl("DIV"); 396 floatleft.Attributes.Add("class", "floatleft fontwhite"); 397 prolistbottom.Controls.Add(floatleft); 398 HtmlGenericControl pagesort = new HtmlGenericControl("DIV"); 399 floatleft.Controls.Add(pagesort); 400 pagesort.Attributes.Add("class", "pagesort"); 401 402 LiteralControl Pages = new LiteralControl(); 403 Pages.Text = "<b>Page(s):</>"; 404 pagesort.Controls.Add(Pages); 405 406 LiteralControl _space = new LiteralControl(); 407 408//Build "First" and "Previous" button cell. 409 Button _btnFirst = new Button(); 410 _btnFirst.Text = "First"; 411 _btnFirst.CssClass = "button"; 412 _btnFirst.CommandName = "Pager"; 413 _btnFirst.CommandArgument = FirstPageIndex.ToString(); 414 pagesort.Controls.Add(_btnFirst); 415 416 Button _btnPrevious = new Button(); 417 _btnPrevious.Text = "Previous"; 418 _btnPrevious.CssClass = "button"; 419 _btnPrevious.CommandName = "Pager"; 420 _btnPrevious.CommandArgument = PreviosPageIndex.ToString(); 421 pagesort.Controls.Add(_btnPrevious); 422 423//Build Page list button. 424for (int i = 0; i < PageCount; i++) 425 { 426if (i > PageIndex - 10 && i < PageIndex + 10) 427 { 428 LinkButton _pageLink = new LinkButton(); 429int cur = i + 1; 430if (PageIndex == i) 431 { 432 _pageLink.Text = "<b><font size=4>" + cur.ToString() + "</font></>"; 433 } 434else 435 { 436 _pageLink.Text = "" + cur.ToString() + ""; 437 } 438 _pageLink.CommandName = "Pager"; 439 _pageLink.CommandArgument = i.ToString(); 440 pagesort.Controls.Add(_pageLink); 441 442if (PageIndex == i) 443 { 444 _pageLink.Enabled = false; 445 } 446 447 _space = new LiteralControl(); 448 _space.Text = " "; 449 pagesort.Controls.Add(_space); 450 } 451 } 452 453//Build "Next" and "Last" button cell. 454 _space = new LiteralControl(); 455 _space.Text = " "; 456 457 Button _btnNext = new Button(); 458 _btnNext.Text = "Next"; 459 _btnNext.CssClass = "button"; 460 _btnNext.CommandName = "Pager"; 461 _btnNext.CommandArgument = NextPageIndex.ToString(); 462 pagesort.Controls.Add(_btnNext); 463 pagesort.Controls.Add(_space); 464 465 Button _btnLast = new Button(); 466 _btnLast.Text = "Last"; 467 _btnLast.CssClass = "button"; 468 _btnLast.CommandName = "Pager"; 469 _btnLast.CommandArgument = LastPageIndex.ToString(); 470 pagesort.Controls.Add(_btnLast); 471 pagesort.Controls.Add(_space); 472 473//Build "Showing Result:" cell. 474 LiteralControl PageResult = new LiteralControl(); 475int _currentPageBeginNo = 0; 476int _currentPageEndNo = 0; 477 478//if (DataCount != 0) 479//{ 480// _currentPageBeginNo = PageIndex * PageSize + 1; 481// _currentPageEndNo = _currentPageBeginNo + PageSize - 1; 482 483// if (_currentPageEndNo > DataCount) 484// { 485// _currentPageEndNo = DataCount; 486// } 487//} 488 489//PageResult.Text = "Showing Result: " + _currentPageBeginNo.ToString() + "-"; 490//if (IsAllowPage) 491//{ 492// PageResult.Text += _currentPageEndNo.ToString(); 493//} 494//else 495//{ 496// PageResult.Text += DataCount.ToString(); 497//} 498//PageResult.Text += " of " + DataCount.ToString(); 499if (TotalDataCount != 0) 500 { 501 _currentPageBeginNo = PageIndex * PageSize + 1; 502 _currentPageEndNo = _currentPageBeginNo + PageSize - 1; 503 504if (_currentPageEndNo > TotalDataCount) 505 { 506 _currentPageEndNo = TotalDataCount; 507 } 508 } 509 510 PageResult.Text = "Showing Result: " + _currentPageBeginNo.ToString() + "-"; 511if (IsAllowPage) 512 { 513 PageResult.Text += _currentPageEndNo.ToString(); 514 } 515else 516 { 517 PageResult.Text += TotalDataCount.ToString(); 518 } 519 PageResult.Text += " of " + TotalDataCount.ToString(); 520 pagesort.Controls.Add(PageResult); 521 522//Build Save Changes Button Cell 523 HtmlGenericControl floatright = new HtmlGenericControl("DIV"); 524 floatright.Attributes.Add("class", "floatright"); 525if (showSaveChangesButton && IsAllowSaveChange && AlwaysShowSaveChange) 526 { 527 Button btn = new Button(); 528 btn.CommandName = "SaveChanges"; 529 btn.Text = "Save Changes"; 530 btn.CssClass = "buttonBig"; 531 floatright.Controls.Add(btn); 532 } 533 534if (showSaveChangesButton && IsAllowAllEdit) 535 { 536 Button btn = new Button(); 537 btn.CommandName = "AllEdit"; 538 btn.Text = "Edit All"; 539 btn.CssClass = "buttonBig"; 540 floatright.Controls.Add(btn); 541 } 542 prolistbottom.Controls.Add(floatright); 543 544//HtmlGenericControl floatclear = new HtmlGenericControl("DIV"); 545//floatclear.Attributes.Add("class", "floatclear"); 546//prolistbottom.Controls.Add(floatclear); 547 548if (PageIndex == 0) 549 { 550 _btnFirst.Enabled = false; 551 _btnPrevious.Enabled = false; 552 } 553if (PageIndex == PageCount - 1) 554 { 555 _btnNext.Enabled = false; 556 _btnLast.Enabled = false; 557 } 558 } 559 560protectedoverridevoid OnRowCreated(GridViewRowEventArgs e) 561 { 562switch (e.Row.RowType) 563 { 564case DataControlRowType.Footer: 565if (this.bHasRecord && Rows.Count != 0) 566 { 567 e.Row.Cells[0].ColumnSpan = Columns.Count; 568for (int i = 0; i < Columns.Count - 1; i++) 569 e.Row.Cells.RemoveAt(1); 570 SetAdvancedPage(e); 571 PagerSettings.Visible = false; 572 ShowFooter = true; 573 } 574break; 575case DataControlRowType.Header: 576#region Build Header 577for (int i = 0; i < Columns.Count; i++) 578 { 579 TableCell cell = e.Row.Cells[i]; 580if (Columns[i].SortExpression.Trim().Length != 0) 581 { 582 LinkButton _headText = new LinkButton(); 583//_headText.CssClass = HeadCss; 584 _headText.Text = Columns[i].HeaderText; 585 _headText.ToolTip = "Sort this column"; 586 _headText.CommandName = "Sort"; 587 _headText.CommandArgument = Columns[i].SortExpression; 588 589 cell.Controls.Add(_headText); 590 591if (OrderByField == Columns[i].SortExpression) 592 { 593 ImageButton _headImage = new ImageButton(); 594 _headImage.CommandName = "Sort"; 595 _headImage.CommandArgument = Columns[i].SortExpression; 596 _headImage.ToolTip = "Sort this column"; 597if (OrderByAsc == true) 598 { 599 _headImage.ImageUrl = "~/Skin/PROTEXUS/Images/SortDirDESC.gif"; 600 601 } 602else 603 { 604 _headImage.ImageUrl = "~/Skin/PROTEXUS/Images/SortDirASC.gif"; 605 } 606 cell.Controls.Add(_headImage); 607 } 608 609 } 610else 611 { 612 LinkButton _headText = new LinkButton(); 613 _headText.Text = Columns[i].HeaderText; 614 cell.Controls.Add(_headText); 615 } 616 617 618if (Columns[i] is SMQGridViewField) 619 { 620 SMQGridViewField field = Columns[i] as SMQGridViewField; 621if (field.CanEdit) 622 { 623if (!IsAllowSaveChange) 624 IsAllowSaveChange = true; 625 626 ImageButton _headEdit = new ImageButton(); 627 _headEdit.CommandName = "EditColumn"; 628 _headEdit.CommandArgument = field.DataField; 629 _headEdit.ToolTip = "Edit this column"; 630if (field.IsEditing) 631 { 632 _headEdit.ImageUrl = "~/Skin/PROTEXUS/Images/icon_edit.gif"; 633 } 634else 635 { 636 _headEdit.ImageUrl = "~/Skin/PROTEXUS/Images/icon_edit_f2.gif"; 637 } 638 cell.Controls.Add(_headEdit); 639 } 640if (field.fieldType == FieldType.Delete) 641 { 642 Image img = new Image(); 643 img.ImageUrl = "~/Skin/PROTEXUS/Images/icon_del.gif"; 644 cell.Controls.Add(img); 645 CheckBox cbx = new CheckBox(); 646 cell.Controls.Add(cbx); 647 } 648if (cell.Controls.Count == 0) 649 { 650 LiteralControl lbl = new LiteralControl(); 651 lbl.Text = field.HeaderText; 652 cell.Controls.Add(lbl); 653 } 654 } 655 } 656#endregion 657break; 658default: 659if (this.bHasRecord) 660 { 661 e.Row.BackColor = System.Drawing.ColorTranslator.FromHtml("#F2F2F2"); 662base.OnRowCreated(e); 663 } 664 665break; 666 } 667 } 668publicvoid SetNoRecordRow(GridViewRowEventArgs e) 669 { 670//if (!this.bHasRecord) 671//{ 672// for (int i = 0; i < e.Row.Cells.Count; i++) 673// { 674// e.Row.Cells[i].Text = " "; 675// } 676//} 677 } 678 679protectedoverridevoid OnRowCommand(GridViewCommandEventArgs e) 680 { 681switch (e.CommandName) 682 { 683case"Sort": 684 OrderByField = e.CommandArgument.ToString(); 685 OrderByAsc = !OrderByAsc; 686break; 687case"Pager": 688 PageIndex = int.Parse(e.CommandArgument.ToString()); 689break; 690case"EditColumn": 691foreach (DataControlField field in Columns) 692 { 693if (field is SMQGridViewField) 694 { 695 SMQGridViewField fld = field as SMQGridViewField; 696if (fld.DataField == e.CommandArgument.ToString()) 697 fld.IsEditing = !fld.IsEditing; 698 } 699 } 700break; 701case"AllEdit": 702 { 703foreach (DataControlField field in Columns) 704 { 705if (field is SMQGridViewField) 706 { 707 SMQGridViewField fld = field as SMQGridViewField; 708 fld.IsEditing = true; 709 } 710 } 711break; 712 } 713case"SaveChanges": 714if (_IsSaveChange) 715 { 716if (!SaveChanges()) 717return; 718 } 719break; 720 } 721base.OnRowCommand(e); 722 } 723 724protectedoverridevoid Render(HtmlTextWriter writer) 725 { 726this.Style.Add("border-collapse", "separate!important"); 727 writer.Write("<div class=\"proList\"><div class=\"prolistTop fontbold textindent10\">" + GridViewName + "</div>"); 728base.Render(writer); 729 writer.Write("</div>"); 730 731 ScriptManager.RegisterStartupScript(this, this.GetType(), this.UniqueID, this.SetGVNoRecordScript(), true); 732 733 } 734 735privatebool SaveChanges() 736 { 737if (string.IsNullOrEmpty(EntityType)) 738returnfalse; 739 740#region Validate has smq field. 741bool hasSMQField = false; 742foreach (DataControlField field inthis.Columns) 743 { 744if (field is SMQGridViewField) 745 { 746 SMQGridViewField fie = field as SMQGridViewField; 747if (fie.IsEditing || fie.fieldType == FieldType.Delete) 748 hasSMQField = true; 749 } 750 } 751if (!hasSMQField) 752returnfalse; 753#endregion 754 755 EntityList DeleteList = new EntityList(); 756 EntityList UpdateList = new EntityList(); 757foreach (GridViewRow row in Rows) 758 { 759int PrimaryKeyValue = int.Parse(DataKeys[row.RowIndex].Value.ToString()); 760 761 Entity entity = System.Activator.CreateInstance(Type.GetType("ProTexus.Model." + EntityType)) as Entity; 762 763#region Get Table Name 764 PropertyInfo[] properties = entity.GetType().GetProperties(); 765foreach (BindingClassAttribute attr in entity.GetType().GetCustomAttributes(typeof(BindingClassAttribute), true)) 766 { 767 entity.TableName = attr.TableName; 768break; 769 } 770#endregion 771 772#region Get Original Data 773string Usp_SQL = "SELECT top 1 * FROM [" + entity.TableName + "] WHERE [" + PrimaryKeyName + "]=" + PrimaryKeyValue.ToString(); 774 ReturnValue _result = entity.getEntity(Usp_SQL); 775if (!_result.Success) 776 { 777returnfalse; 778 } 779 entity = _result.Object; 780#endregion 781 782#region Set New Data 783foreach (DataControlFieldCell cell in row.Cells) 784 { 785if (cell.ContainingField is SMQGridViewField) 786 { 787 788 SMQGridViewField field = cell.ContainingField as SMQGridViewField; 789 790if (field.fieldType == FieldType.Delete) 791 { 792 CheckBox cbx = cell.Controls[0] as CheckBox; 793if (cbx.Checked) 794 { 795 entity.GetType().GetProperty(PrimaryKeyName).SetValue(entity, PrimaryKeyValue, null); 796 DeleteList.Add(entity); 797goto NewRow; 798 } 799 } 800else 801 { 802if (field.IsEditing) 803 { 804if (field.fieldType == FieldType.DateTime) 805 { 806//DateSelector dsl = cell.Controls[0] as DateSelector; 807//if (dsl.HasDateTime) 808//{ 809// entity.GetType().GetProperty(field.DataField).SetValue(entity, dsl.DateTime, null); 810//} 811//else 812//{ 813// cell.Controls.Add(new LiteralControl("<div class=\"MessageSummary\">Please provide a datetime</div>")); 814// return false; 815//} 816 } 817if (field.fieldType == FieldType.CheckBox) 818 { 819 CheckBox cbx = cell.Controls[0] as CheckBox; 820 entity.GetType().GetProperty(field.DataField).SetValue(entity, cbx.Checked, null); 821 } 822if (field.fieldType == FieldType.CheckBoxFeature) 823 { 824 CheckBox cbx = cell.Controls[0] as CheckBox; 825string statusId = "Status"; 826 entity.GetType().GetProperty(statusId).SetValue(entity, cbx.Checked, null); 827 } 828 829if (field.fieldType == FieldType.Status) 830 { 831 DropDownList ddl = cell.Controls[0] as DropDownList; 832string contentStatusName = "ContentStatusId"; 833if (!string.IsNullOrEmpty(field.ContentStatusName)) 834 { 835 contentStatusName = field.ContentStatusName; 836 } 837 entity.GetType().GetProperty(contentStatusName).SetValue(entity, int.Parse(ddl.SelectedValue), null); 838 } 839 840if (field.fieldType == FieldType.PPStatus) 841 { 842 DropDownList ddl = cell.Controls[0] as DropDownList; 843string contentStatusName = "ContentStatusId"; 844if (!string.IsNullOrEmpty(field.ContentStatusName)) 845 { 846 contentStatusName = field.ContentStatusName; 847 } 848 entity.GetType().GetProperty(contentStatusName).SetValue(entity, int.Parse(ddl.SelectedValue), null); 849 } 850 851if (field.fieldType == FieldType.Feature) 852 { 853 DropDownList ddl_Feature = cell.Controls[0] as DropDownList; 854string locationId = "Location"; 855if (!string.IsNullOrEmpty(field.FeatureLocation)) 856 { 857 locationId = field.FeatureLocation; 858 } 859 entity.GetType().GetProperty(locationId).SetValue(entity, int.Parse(ddl_Feature.SelectedValue), null); 860 } 861 862if (field.fieldType == FieldType.Int) 863 { 864 TextBox txt = cell.Controls[0] as TextBox; 865if (SILK2010.Utilities.isInteger(txt.Text)) 866 { 867 entity.GetType().GetProperty(field.DataField).SetValue(entity, int.Parse(txt.Text), null); 868 } 869else 870 { 871 cell.Controls.Add(new LiteralControl("<div class=\"MessageSummary\">Please provide a integer</div>")); 872returnfalse; 873 } 874 } 875 876if (field.fieldType == FieldType.MaxQty) 877 { 878 TextBox txt = cell.Controls[0] as TextBox; 879 880if (!string.IsNullOrEmpty(txt.Text)) 881 { 882if (SILK2010.Utilities.IsDouble(txt.Text.Trim())) 883 { 884//if (int.Parse(txt.Text.Trim()) <= 0) 885//{ 886// cell.Controls.Add(new LiteralControl("<div class=\"MessageSummary\">Duration‘s data must larger than 0</div>")); 887// return false; 888 889//} 890//else 891//{ 892 entity.GetType().GetProperty(field.DataField).SetValue(entity, int.Parse(txt.Text), null); 893//} 894 } 895else 896 { 897 cell.Controls.Add(new LiteralControl("<div class=\"MessageSummary\">Please provide a number</div>")); 898returnfalse; 899 } 900 } 901else 902 { 903 entity.GetType().GetProperty(field.DataField).SetValue(entity, null, null); 904 905 } 906 907 908 } 909if (field.fieldType == FieldType.Double) 910 { 911 TextBox txt = cell.Controls[0] as TextBox; 912if (SILK2010.Utilities.IsDouble(txt.Text)) 913 { 914 entity.GetType().GetProperty(field.DataField).SetValue(entity, double.Parse(txt.Text), null); 915 } 916else 917 { 918 cell.Controls.Add(new LiteralControl("<div class=\"MessageSummary\">Please provide a number</div>")); 919returnfalse; 920 } 921 } 922if (field.fieldType == FieldType.TextBox || field.fieldType == FieldType.LinkButton) 923 { 924 TextBox txt = cell.Controls[0] as TextBox; 925 entity.GetType().GetProperty(field.DataField).SetValue(entity, txt.Text, null); 926 } 927if (field.fieldType == FieldType.Duration) 928 { 929 TextBox txt_Duration = cell.Controls[0] as TextBox; 930 DropDownList ddl_TimeType = cell.Controls[1] as DropDownList; 931 932if (!string.IsNullOrEmpty(txt_Duration.Text)) 933 { 934if (SILK2010.Utilities.IsDouble(txt_Duration.Text.Trim())) 935 { 936//if (double.Parse(txt_Duration.Text.Trim()) <= 0) 937//{ 938// cell.Controls.Add(new LiteralControl("<div class=\"MessageSummary\">Duration‘s data must larger than 0</div>")); 939// return false; 940//} 941//else 942//{ 943if (ddl_TimeType.SelectedValue == "Order") 944 { 945 entity.GetType().GetProperty("Duration").SetValue(entity, double.Parse("1"), null); 946 entity.GetType().GetProperty("TimeType").SetValue(entity, ddl_TimeType.SelectedValue, null); 947 948 } 949else 950 { 951 952 entity.GetType().GetProperty("Duration").SetValue(entity, double.Parse(txt_Duration.Text.Trim()), null); 953 entity.GetType().GetProperty("TimeType").SetValue(entity, ddl_TimeType.SelectedValue, null); 954 } 955//} 956 957 } 958else 959 { 960 961 cell.Controls.Add(new LiteralControl("<div class=\"MessageSummary\">Please provide a number for Duration field</div>")); 962returnfalse; 963 964 } 965 } 966else 967 { 968if (ddl_TimeType.SelectedValue == "Order") 969 { 970 entity.GetType().GetProperty("Duration").SetValue(entity, double.Parse("1"), null); 971 entity.GetType().GetProperty("TimeType").SetValue(entity, ddl_TimeType.SelectedValue, null); 972 973 } 974else 975 { 976 entity.GetType().GetProperty("Duration").SetValue(entity, null, null); 977 entity.GetType().GetProperty("TimeType").SetValue(entity, null, null); 978 } 979 980 } 981 982 } 983 } 984 } 985 } 986 } 987 988 989 UpdateList.Add(entity); 990 991 992//UpdateList.Add(entity); 993 994 NewRow: 995continue; 996 997#endregion 998 999 } 10001001#region Save New Data 10021003 Entity entityForTrans = System.Activator.CreateInstance(Type.GetType("ZstoreAdmin.Model." + EntityType)) as Entity; 10041005 Transaction trans = new Transaction(entityForTrans.DataConnectProviders); 10061007 ReturnValue result = new ReturnValue(); 10081009foreach (Entity entity in DeleteList) 1010 { 1011 result = entity.Delete(trans); 1012if (!result.Success) 1013 { 1014if (trans.InTransaction) 1015 trans.RollbackTransaction(); 1016returnfalse; 1017 } 1018 } 1019102010211022foreach (Entity entity in UpdateList) 1023 { 1024 result = entity.Update(trans); 1025if (!result.Success) 1026 { 1027if (trans.InTransaction) 1028 trans.RollbackTransaction(); 1029returnfalse; 1030 } 1031 } 103210331034 trans.CommitTransaction(); 10351036#endregion10371038#region Restore Grid State 10391040foreach (DataControlField field inthis.Columns) 1041 { 1042if (field is SMQGridViewField) 1043 { 1044 ((SMQGridViewField)field).IsEditing = false; 1045 } 1046 } 10471048#endregion10491050returntrue; 1051 } 10521053publicbool SaveChangesAfterValidation() 1054 { 1055returnthis.SaveChanges(); 1056 } 10571058privatestring SetGVNoRecordScript() 1059 { 10601061if (this.bHasRecord) 1062 { 1063return""; 1064 } 106510661067 StringBuilder sb = new StringBuilder(); 10681069 sb.Append("\r\n function SetGVNoRecord" + this.ClientID + "(){"); 1070 sb.Append("\r\n var gv = document.getElementById(‘" + this.ClientID + "‘);"); 1071 sb.Append("\r\n if(gv == null){ return;}"); 1072 sb.Append("\r\n var rowCount = gv.rows.length;"); 1073 sb.Append("\r\n for(var i = rowCount - 1 ; i > 0;i--){"); 1074 sb.Append("\r\n if(i == 1){"); 1075 sb.Append("\r\n for(var j =0 ; j < gv.rows[i].cells.length;j++){"); 1076 sb.Append("\r\n gv.rows[i].cells[j].innerHTML=‘ ‘;"); 1077 sb.Append("\r\n }"); 1078 sb.Append("\r\n }"); 1079 sb.Append("\r\n else {"); 1080 sb.Append("\r\n gv.deleteRow(i);"); 1081 sb.Append("\r\n }"); 1082 sb.Append("\r\n }"); 1083 sb.Append("\r\n }"); 1084 sb.Append("\r\n SetGVNoRecord" + this.ClientID + "();"); 10851086return sb.ToString(); 1087 } 1088 } 1089 }
1 using System; 2 using System.Web.UI; 3 using System.Web.UI.WebControls; 4 using System.Web.UI.HtmlControls; 5 using System.Collections; 6 using System.Collections.Generic; 7 using System.Text; 8 using System.Web.UI.Design; 9 using System.ComponentModel; 10 using SILK2010; 11 using System.Reflection; 12 using System.Web; 13 14 15 16 namespace FrameWorkV4.Controls 17 { 18 public class SMQGridView : System.Web.UI.WebControls.GridView 19 { 20 #region Private Property 21privateint dataCout; 22privateint DataCount 23 { 24get 25 { 26if (dataCout == 0 && DataSource != null) 27 { 28if (DataSource is IEnumerable) 29 { 30 IEnumerable DataSourceList = (IEnumerable)DataSource; 31 IEnumerator enumerator = DataSourceList.GetEnumerator(); 32 enumerator.Reset(); 33while (enumerator.MoveNext()) 34 { 35 dataCout++; 36 } 37 } 38if (DataSource is IListSource) 39 { 40 IListSource DataSourceList = (IListSource)DataSource; 41 IList list = DataSourceList.GetList(); 42 dataCout = list.Count; 43 } 44 } 45return dataCout; 46 } 47 } 48privateint FirstPageIndex 49 { 50get 51 { 52return0; 53 } 54 } 55privateint PreviosPageIndex 56 { 57get 58 { 59return Math.Max(PageIndex - 1, 0); 60 } 61 } 62privateint NextPageIndex 63 { 64get 65 { 66return Math.Min(PageIndex + 1, PageCount - 1); 67 } 68 } 69privateint LastPageIndex 70 { 71get 72 { 73return PageCount - 1; 74 } 75 } 76//Added by tony at 2010.12.16 77privateint TotalDataCount 78 { 79get 80 { 81object o = ViewState["TotalDataCount"]; 82int _dataCout = 0; 83if (o != null) 84 { 85 _dataCout = int.Parse(o.ToString()); 86 } 87return _dataCout; 88 } 89set 90 { 91 ViewState["TotalDataCount"] = value; 92 } 93 } 94#endregion 95 96#region Public Property 97publicstring OrderByField 98 { 99get 100 { 101object o = ViewState["OrderByField"]; 102if (o == null) 103 { 104for (int i = 0; i < Columns.Count; i++) 105 { 106if (Columns[i].SortExpression.Trim() != string.Empty) 107return Columns[i].SortExpression; 108 } 109returnstring.Empty; 110 } 111return (string)o; 112 } 113set 114 { 115 ViewState["OrderByField"] = value; 116 } 117 } 118publicbool OrderByAsc 119 { 120get 121 { 122object o = ViewState["OrderByAsc"]; 123if (o == null) 124 { 125returntrue; 126 } 127return (bool)o; 128 } 129set 130 { 131 ViewState["OrderByAsc"] = value; 132 } 133 } 134publicstring EntityType; 135publicstring PrimaryKeyName; 136publicstring GridViewName; 137privatebool showSaveChangesButton 138 { 139get 140 { 141foreach (DataControlField field in Columns) 142 { 143if (field is SMQGridViewField) 144returntrue; 145 } 146returnfalse; 147 } 148 } 149#endregion 150 151 152privatebool _isSaveChange = true; 153publicbool _IsSaveChange 154 { 155get 156 { 157return _isSaveChange; 158 } 159set 160 { 161 _isSaveChange = value; 162 } 163 164 } 165 166 167//Added by tony at 2010.12.16 168publicoverrideobject DataSource 169 { 170get 171 { 172returnbase.DataSource; 173 } 174set 175 { 176base.DataSource = value; 177int _dataCout = 0; 178if (value is IEnumerable) 179 { 180 IEnumerable DataSourceList = (IEnumerable)value; 181 IEnumerator enumerator = DataSourceList.GetEnumerator(); 182 enumerator.Reset(); 183while (enumerator.MoveNext()) 184 { 185 _dataCout++; 186 } 187 } 188if (value is IListSource) 189 { 190 IListSource DataSourceList = (IListSource)DataSource; 191 IList list = DataSourceList.GetList(); 192 _dataCout = list.Count; 193 } 194 TotalDataCount = _dataCout; 195 } 196 } 197 198privatebool _isAllowSaveChange = false; 199 200 201 202publicbool IsAllowSaveChange 203 { 204get { return _isAllowSaveChange; } 205set { _isAllowSaveChange = value; } 206 } 207 208 209privatebool _alwaysShowSaveChange = true; 210 211publicbool AlwaysShowSaveChange 212 { 213get { return _alwaysShowSaveChange; } 214set { _alwaysShowSaveChange = value; } 215 } 216privatebool _isAllowAllEdit = false; 217 218publicbool IsAllowAllEdit 219 { 220get { return _isAllowAllEdit; } 221set { _isAllowAllEdit = value; } 222 } 223 224privateint _gv_ProgramProductId; 225publicint GV_ProgramProductId 226 { 227get { return _gv_ProgramProductId; } 228set { _gv_ProgramProductId = value; } 229 } 230 231privatebool _isProductFeature = false; 232publicbool IsProductFeature 233 { 234get { return _isProductFeature; } 235set { _isProductFeature = value; } 236 } 237 238privatebool _isSweepCart = false; 239publicbool IsSweepCart 240 { 241get { return _isSweepCart; } 242set { _isSweepCart = value; } 243 } 244 245privatebool _isprogramproductordertype = false; 246publicbool IsProgramProductOrderType 247 { 248get 249 { 250return _isprogramproductordertype; 251 } 252set 253 { 254 _isprogramproductordertype = value; 255 } 256 } 257 258privatebool _isprogramproductcustomertype = false; 259 260publicbool IsProgramProductCustomerType 261 { 262get 263 { 264return _isprogramproductcustomertype; 265 } 266set 267 { 268 _isprogramproductcustomertype = value; 269 } 270 } 271 272privatebool _isReducePrice = false; 273publicbool IsReducePrice 274 { 275get { return _isReducePrice; } 276set { _isReducePrice = value; } 277 } 278 279privateint _programproductid = 0; 280publicint ProgramProductId 281 { 282get 283 { 284return _programproductid; 285 } 286set 287 { 288 _programproductid = value; 289 } 290 } 291 292privatebool _isAllowPage = true; 293publicbool IsAllowPage 294 { 295get { return _isAllowPage; } 296set { _isAllowPage = value; } 297 } 298 299 300privatebool _updateppstatus = false; 301publicbool UpdatePPStatus 302 { 303get 304 { 305return _updateppstatus; 306 } 307set 308 { 309 _updateppstatus = value; 310 } 311 } 312 313 314privatebool bHasRecord 315 { 316get 317 { 318try 319 { 320returnbool.Parse(ViewState["bHasRecord"].ToString()); 321 } 322catch 323 { 324returnfalse; 325 } 326 } 327set 328 { 329 ViewState["bHasRecord"] = value.ToString(); 330 } 331 } 332 333protectedoverridevoid OnDataBinding(EventArgs e) 334 { 335if (DataSource == null) 336 { 337base.OnDataBinding(e); 338return; 339 } 340 341var aa = DataSource as List<SILK2010.Entity>; 342if ((DataSource is SILK2010.EntityList) == false) 343 { 344base.OnDataBinding(e); 345return; 346 } 347 348 349 SILK2010.EntityList ds = DataSource as SILK2010.EntityList; 350if (!string.IsNullOrEmpty(OrderByField)) 351 { 352 ds.Sort(OrderByField, OrderByAsc); 353 } 354if (!string.IsNullOrEmpty(PrimaryKeyName)) 355 { 356this.DataKeyNames = newstring[1] { PrimaryKeyName }; 357 } 358if (!_isAllowPage) 359 { 360this.AllowPaging = false; 361 } 362else 363 { 364this.AllowPaging = true; 365 } 366 367if (ds.Count == 0) 368 { 369if (string.IsNullOrEmpty(this.EntityType)) 370 { 371return; 372 } 373 374 Assembly asmb = Assembly.LoadFrom(HttpContext.Current.Server.MapPath("~/Bin/ProTexusModel.dll")); 375 Entity entity = System.Activator.CreateInstance(asmb.GetType("ProTexus.Model." + EntityType)) as Entity; 376 377 ds.Add(entity); 378 379this.DataSource = ds; 380 381this.bHasRecord = false; 382 } 383else 384 { 385this.bHasRecord = true; 386 } 387base.OnDataBinding(e); 388 } 389 390privatevoid SetAdvancedPage(GridViewRowEventArgs e) 391 { 392 HtmlGenericControl prolistbottom = new HtmlGenericControl("DIV"); 393 e.Row.Cells[0].Controls.Add(prolistbottom); 394 prolistbottom.Attributes.Add("class", "prolistbottom textindent10"); 395 HtmlGenericControl floatleft = new HtmlGenericControl("DIV"); 396 floatleft.Attributes.Add("class", "floatleft fontwhite"); 397 prolistbottom.Controls.Add(floatleft); 398 HtmlGenericControl pagesort = new HtmlGenericControl("DIV"); 399 floatleft.Controls.Add(pagesort); 400 pagesort.Attributes.Add("class", "pagesort"); 401 402 LiteralControl Pages = new LiteralControl(); 403 Pages.Text = "<b>Page(s):</>"; 404 pagesort.Controls.Add(Pages); 405 406 LiteralControl _space = new LiteralControl(); 407 408//Build "First" and "Previous" button cell. 409 Button _btnFirst = new Button(); 410 _btnFirst.Text = "First"; 411 _btnFirst.CssClass = "button"; 412 _btnFirst.CommandName = "Pager"; 413 _btnFirst.CommandArgument = FirstPageIndex.ToString(); 414 pagesort.Controls.Add(_btnFirst); 415 416 Button _btnPrevious = new Button(); 417 _btnPrevious.Text = "Previous"; 418 _btnPrevious.CssClass = "button"; 419 _btnPrevious.CommandName = "Pager"; 420 _btnPrevious.CommandArgument = PreviosPageIndex.ToString(); 421 pagesort.Controls.Add(_btnPrevious); 422 423//Build Page list button. 424for (int i = 0; i < PageCount; i++) 425 { 426if (i > PageIndex - 10 && i < PageIndex + 10) 427 { 428 LinkButton _pageLink = new LinkButton(); 429int cur = i + 1; 430if (PageIndex == i) 431 { 432 _pageLink.Text = "<b><font size=4>" + cur.ToString() + "</font></>"; 433 } 434else 435 { 436 _pageLink.Text = "" + cur.ToString() + ""; 437 } 438 _pageLink.CommandName = "Pager"; 439 _pageLink.CommandArgument = i.ToString(); 440 pagesort.Controls.Add(_pageLink); 441 442if (PageIndex == i) 443 { 444 _pageLink.Enabled = false; 445 } 446 447 _space = new LiteralControl(); 448 _space.Text = " "; 449 pagesort.Controls.Add(_space); 450 } 451 } 452 453//Build "Next" and "Last" button cell. 454 _space = new LiteralControl(); 455 _space.Text = " "; 456 457 Button _btnNext = new Button(); 458 _btnNext.Text = "Next"; 459 _btnNext.CssClass = "button"; 460 _btnNext.CommandName = "Pager"; 461 _btnNext.CommandArgument = NextPageIndex.ToString(); 462 pagesort.Controls.Add(_btnNext); 463 pagesort.Controls.Add(_space); 464 465 Button _btnLast = new Button(); 466 _btnLast.Text = "Last"; 467 _btnLast.CssClass = "button"; 468 _btnLast.CommandName = "Pager"; 469 _btnLast.CommandArgument = LastPageIndex.ToString(); 470 pagesort.Controls.Add(_btnLast); 471 pagesort.Controls.Add(_space); 472 473//Build "Showing Result:" cell. 474 LiteralControl PageResult = new LiteralControl(); 475int _currentPageBeginNo = 0; 476int _currentPageEndNo = 0; 477 478//if (DataCount != 0) 479//{ 480// _currentPageBeginNo = PageIndex * PageSize + 1; 481// _currentPageEndNo = _currentPageBeginNo + PageSize - 1; 482 483// if (_currentPageEndNo > DataCount) 484// { 485// _currentPageEndNo = DataCount; 486// } 487//} 488 489//PageResult.Text = "Showing Result: " + _currentPageBeginNo.ToString() + "-"; 490//if (IsAllowPage) 491//{ 492// PageResult.Text += _currentPageEndNo.ToString(); 493//} 494//else 495//{ 496// PageResult.Text += DataCount.ToString(); 497//} 498//PageResult.Text += " of " + DataCount.ToString(); 499if (TotalDataCount != 0) 500 { 501 _currentPageBeginNo = PageIndex * PageSize + 1; 502 _currentPageEndNo = _currentPageBeginNo + PageSize - 1; 503 504if (_currentPageEndNo > TotalDataCount) 505 { 506 _currentPageEndNo = TotalDataCount; 507 } 508 } 509 510 PageResult.Text = "Showing Result: " + _currentPageBeginNo.ToString() + "-"; 511if (IsAllowPage) 512 { 513 PageResult.Text += _currentPageEndNo.ToString(); 514 } 515else 516 { 517 PageResult.Text += TotalDataCount.ToString(); 518 } 519 PageResult.Text += " of " + TotalDataCount.ToString(); 520 pagesort.Controls.Add(PageResult); 521 522//Build Save Changes Button Cell 523 HtmlGenericControl floatright = new HtmlGenericControl("DIV"); 524 floatright.Attributes.Add("class", "floatright"); 525if (showSaveChangesButton && IsAllowSaveChange && AlwaysShowSaveChange) 526 { 527 Button btn = new Button(); 528 btn.CommandName = "SaveChanges"; 529 btn.Text = "Save Changes"; 530 btn.CssClass = "buttonBig"; 531 floatright.Controls.Add(btn); 532 } 533 534if (showSaveChangesButton && IsAllowAllEdit) 535 { 536 Button btn = new Button(); 537 btn.CommandName = "AllEdit"; 538 btn.Text = "Edit All"; 539 btn.CssClass = "buttonBig"; 540 floatright.Controls.Add(btn); 541 } 542 prolistbottom.Controls.Add(floatright); 543 544//HtmlGenericControl floatclear = new HtmlGenericControl("DIV"); 545//floatclear.Attributes.Add("class", "floatclear"); 546//prolistbottom.Controls.Add(floatclear); 547 548if (PageIndex == 0) 549 { 550 _btnFirst.Enabled = false; 551 _btnPrevious.Enabled = false; 552 } 553if (PageIndex == PageCount - 1) 554 { 555 _btnNext.Enabled = false; 556 _btnLast.Enabled = false; 557 } 558 } 559 560protectedoverridevoid OnRowCreated(GridViewRowEventArgs e) 561 { 562switch (e.Row.RowType) 563 { 564case DataControlRowType.Footer: 565if (this.bHasRecord && Rows.Count != 0) 566 { 567 e.Row.Cells[0].ColumnSpan = Columns.Count; 568for (int i = 0; i < Columns.Count - 1; i++) 569 e.Row.Cells.RemoveAt(1); 570 SetAdvancedPage(e); 571 PagerSettings.Visible = false; 572 ShowFooter = true; 573 } 574break; 575case DataControlRowType.Header: 576#region Build Header 577for (int i = 0; i < Columns.Count; i++) 578 { 579 TableCell cell = e.Row.Cells[i]; 580if (Columns[i].SortExpression.Trim().Length != 0) 581 { 582 LinkButton _headText = new LinkButton(); 583//_headText.CssClass = HeadCss; 584 _headText.Text = Columns[i].HeaderText; 585 _headText.ToolTip = "Sort this column"; 586 _headText.CommandName = "Sort"; 587 _headText.CommandArgument = Columns[i].SortExpression; 588 589 cell.Controls.Add(_headText); 590 591if (OrderByField == Columns[i].SortExpression) 592 { 593 ImageButton _headImage = new ImageButton(); 594 _headImage.CommandName = "Sort"; 595 _headImage.CommandArgument = Columns[i].SortExpression; 596 _headImage.ToolTip = "Sort this column"; 597if (OrderByAsc == true) 598 { 599 _headImage.ImageUrl = "~/Skin/PROTEXUS/Images/SortDirDESC.gif"; 600 601 } 602else 603 { 604 _headImage.ImageUrl = "~/Skin/PROTEXUS/Images/SortDirASC.gif"; 605 } 606 cell.Controls.Add(_headImage); 607 } 608 609 } 610else 611 { 612 LinkButton _headText = new LinkButton(); 613 _headText.Text = Columns[i].HeaderText; 614 cell.Controls.Add(_headText); 615 } 616 617 618if (Columns[i] is SMQGridViewField) 619 { 620 SMQGridViewField field = Columns[i] as SMQGridViewField; 621if (field.CanEdit) 622 { 623if (!IsAllowSaveChange) 624 IsAllowSaveChange = true; 625 626 ImageButton _headEdit = new ImageButton(); 627 _headEdit.CommandName = "EditColumn"; 628 _headEdit.CommandArgument = field.DataField; 629 _headEdit.ToolTip = "Edit this column"; 630if (field.IsEditing) 631 { 632 _headEdit.ImageUrl = "~/Skin/PROTEXUS/Images/icon_edit.gif"; 633 } 634else 635 { 636 _headEdit.ImageUrl = "~/Skin/PROTEXUS/Images/icon_edit_f2.gif"; 637 } 638 cell.Controls.Add(_headEdit); 639 } 640if (field.fieldType == FieldType.Delete) 641 { 642 Image img = new Image(); 643 img.ImageUrl = "~/Skin/PROTEXUS/Images/icon_del.gif"; 644 cell.Controls.Add(img); 645 CheckBox cbx = new CheckBox(); 646 cell.Controls.Add(cbx); 647 } 648if (cell.Controls.Count == 0) 649 { 650 LiteralControl lbl = new LiteralControl(); 651 lbl.Text = field.HeaderText; 652 cell.Controls.Add(lbl); 653 } 654 } 655 } 656#endregion 657break; 658default: 659if (this.bHasRecord) 660 { 661 e.Row.BackColor = System.Drawing.ColorTranslator.FromHtml("#F2F2F2"); 662base.OnRowCreated(e); 663 } 664 665break; 666 } 667 } 668publicvoid SetNoRecordRow(GridViewRowEventArgs e) 669 { 670//if (!this.bHasRecord) 671//{ 672// for (int i = 0; i < e.Row.Cells.Count; i++) 673// { 674// e.Row.Cells[i].Text = " "; 675// } 676//} 677 } 678 679protectedoverridevoid OnRowCommand(GridViewCommandEventArgs e) 680 { 681switch (e.CommandName) 682 { 683case"Sort": 684 OrderByField = e.CommandArgument.ToString(); 685 OrderByAsc = !OrderByAsc; 686break; 687case"Pager": 688 PageIndex = int.Parse(e.CommandArgument.ToString()); 689break; 690case"EditColumn": 691foreach (DataControlField field in Columns) 692 { 693if (field is SMQGridViewField) 694 { 695 SMQGridViewField fld = field as SMQGridViewField; 696if (fld.DataField == e.CommandArgument.ToString()) 697 fld.IsEditing = !fld.IsEditing; 698 } 699 } 700break; 701case"AllEdit": 702 { 703foreach (DataControlField field in Columns) 704 { 705if (field is SMQGridViewField) 706 { 707 SMQGridViewField fld = field as SMQGridViewField; 708 fld.IsEditing = true; 709 } 710 } 711break; 712 } 713case"SaveChanges": 714if (_IsSaveChange) 715 { 716if (!SaveChanges()) 717return; 718 } 719break; 720 } 721base.OnRowCommand(e); 722 } 723 724protectedoverridevoid Render(HtmlTextWriter writer) 725 { 726this.Style.Add("border-collapse", "separate!important"); 727 writer.Write("<div class=\"proList\"><div class=\"prolistTop fontbold textindent10\">" + GridViewName + "</div>"); 728base.Render(writer); 729 writer.Write("</div>"); 730 731 ScriptManager.RegisterStartupScript(this, this.GetType(), this.UniqueID, this.SetGVNoRecordScript(), true); 732 733 } 734 735privatebool SaveChanges() 736 { 737if (string.IsNullOrEmpty(EntityType)) 738returnfalse; 739 740#region Validate has smq field. 741bool hasSMQField = false; 742foreach (DataControlField field inthis.Columns) 743 { 744if (field is SMQGridViewField) 745 { 746 SMQGridViewField fie = field as SMQGridViewField; 747if (fie.IsEditing || fie.fieldType == FieldType.Delete) 748 hasSMQField = true; 749 } 750 } 751if (!hasSMQField) 752returnfalse; 753#endregion 754 755 EntityList DeleteList = new EntityList(); 756 EntityList UpdateList = new EntityList(); 757foreach (GridViewRow row in Rows) 758 { 759int PrimaryKeyValue = int.Parse(DataKeys[row.RowIndex].Value.ToString()); 760 761 Entity entity = System.Activator.CreateInstance(Type.GetType("ProTexus.Model." + EntityType)) as Entity; 762 763#region Get Table Name 764 PropertyInfo[] properties = entity.GetType().GetProperties(); 765foreach (BindingClassAttribute attr in entity.GetType().GetCustomAttributes(typeof(BindingClassAttribute), true)) 766 { 767 entity.TableName = attr.TableName; 768break; 769 } 770#endregion 771 772#region Get Original Data 773string Usp_SQL = "SELECT top 1 * FROM [" + entity.TableName + "] WHERE [" + PrimaryKeyName + "]=" + PrimaryKeyValue.ToString(); 774 ReturnValue _result = entity.getEntity(Usp_SQL); 775if (!_result.Success) 776 { 777returnfalse; 778 } 779 entity = _result.Object; 780#endregion 781 782#region Set New Data 783foreach (DataControlFieldCell cell in row.Cells) 784 { 785if (cell.ContainingField is SMQGridViewField) 786 { 787 788 SMQGridViewField field = cell.ContainingField as SMQGridViewField; 789 790if (field.fieldType == FieldType.Delete) 791 { 792 CheckBox cbx = cell.Controls[0] as CheckBox; 793if (cbx.Checked) 794 { 795 entity.GetType().GetProperty(PrimaryKeyName).SetValue(entity, PrimaryKeyValue, null); 796 DeleteList.Add(entity); 797goto NewRow; 798 } 799 } 800else 801 { 802if (field.IsEditing) 803 { 804if (field.fieldType == FieldType.DateTime) 805 { 806//DateSelector dsl = cell.Controls[0] as DateSelector; 807//if (dsl.HasDateTime) 808//{ 809// entity.GetType().GetProperty(field.DataField).SetValue(entity, dsl.DateTime, null); 810//} 811//else 812//{ 813// cell.Controls.Add(new LiteralControl("<div class=\"MessageSummary\">Please provide a datetime</div>")); 814// return false; 815//} 816 } 817if (field.fieldType == FieldType.CheckBox) 818 { 819 CheckBox cbx = cell.Controls[0] as CheckBox; 820 entity.GetType().GetProperty(field.DataField).SetValue(entity, cbx.Checked, null); 821 } 822if (field.fieldType == FieldType.CheckBoxFeature) 823 { 824 CheckBox cbx = cell.Controls[0] as CheckBox; 825string statusId = "Status"; 826 entity.GetType().GetProperty(statusId).SetValue(entity, cbx.Checked, null); 827 } 828 829if (field.fieldType == FieldType.Status) 830 { 831 DropDownList ddl = cell.Controls[0] as DropDownList; 832string contentStatusName = "ContentStatusId"; 833if (!string.IsNullOrEmpty(field.ContentStatusName)) 834 { 835 contentStatusName = field.ContentStatusName; 836 } 837 entity.GetType().GetProperty(contentStatusName).SetValue(entity, int.Parse(ddl.SelectedValue), null); 838 } 839 840if (field.fieldType == FieldType.PPStatus) 841 { 842 DropDownList ddl = cell.Controls[0] as DropDownList; 843string contentStatusName = "ContentStatusId"; 844if (!string.IsNullOrEmpty(field.ContentStatusName)) 845 { 846 contentStatusName = field.ContentStatusName; 847 } 848 entity.GetType().GetProperty(contentStatusName).SetValue(entity, int.Parse(ddl.SelectedValue), null); 849 } 850 851if (field.fieldType == FieldType.Feature) 852 { 853 DropDownList ddl_Feature = cell.Controls[0] as DropDownList; 854string locationId = "Location"; 855if (!string.IsNullOrEmpty(field.FeatureLocation)) 856 { 857 locationId = field.FeatureLocation; 858 } 859 entity.GetType().GetProperty(locationId).SetValue(entity, int.Parse(ddl_Feature.SelectedValue), null); 860 } 861 862if (field.fieldType == FieldType.Int) 863 { 864 TextBox txt = cell.Controls[0] as TextBox; 865if (SILK2010.Utilities.isInteger(txt.Text)) 866 { 867 entity.GetType().GetProperty(field.DataField).SetValue(entity, int.Parse(txt.Text), null); 868 } 869else 870 { 871 cell.Controls.Add(new LiteralControl("<div class=\"MessageSummary\">Please provide a integer</div>")); 872returnfalse; 873 } 874 } 875 876if (field.fieldType == FieldType.MaxQty) 877 { 878 TextBox txt = cell.Controls[0] as TextBox; 879 880if (!string.IsNullOrEmpty(txt.Text)) 881 { 882if (SILK2010.Utilities.IsDouble(txt.Text.Trim())) 883 { 884//if (int.Parse(txt.Text.Trim()) <= 0) 885//{ 886// cell.Controls.Add(new LiteralControl("<div class=\"MessageSummary\">Duration‘s data must larger than 0</div>")); 887// return false; 888 889//} 890//else 891//{ 892 entity.GetType().GetProperty(field.DataField).SetValue(entity, int.Parse(txt.Text), null); 893//} 894 } 895else 896 { 897 cell.Controls.Add(new LiteralControl("<div class=\"MessageSummary\">Please provide a number</div>")); 898returnfalse; 899 } 900 } 901else 902 { 903 entity.GetType().GetProperty(field.DataField).SetValue(entity, null, null); 904 905 } 906 907 908 } 909if (field.fieldType == FieldType.Double) 910 { 911 TextBox txt = cell.Controls[0] as TextBox; 912if (SILK2010.Utilities.IsDouble(txt.Text)) 913 { 914 entity.GetType().GetProperty(field.DataField).SetValue(entity, double.Parse(txt.Text), null); 915 } 916else 917 { 918 cell.Controls.Add(new LiteralControl("<div class=\"MessageSummary\">Please provide a number</div>")); 919returnfalse; 920 } 921 } 922if (field.fieldType == FieldType.TextBox || field.fieldType == FieldType.LinkButton) 923 { 924 TextBox txt = cell.Controls[0] as TextBox; 925 entity.GetType().GetProperty(field.DataField).SetValue(entity, txt.Text, null); 926 } 927if (field.fieldType == FieldType.Duration) 928 { 929 TextBox txt_Duration = cell.Controls[0] as TextBox; 930 DropDownList ddl_TimeType = cell.Controls[1] as DropDownList; 931 932if (!string.IsNullOrEmpty(txt_Duration.Text)) 933 { 934if (SILK2010.Utilities.IsDouble(txt_Duration.Text.Trim())) 935 { 936//if (double.Parse(txt_Duration.Text.Trim()) <= 0) 937//{ 938// cell.Controls.Add(new LiteralControl("<div class=\"MessageSummary\">Duration‘s data must larger than 0</div>")); 939// return false; 940//} 941//else 942//{ 943if (ddl_TimeType.SelectedValue == "Order") 944 { 945 entity.GetType().GetProperty("Duration").SetValue(entity, double.Parse("1"), null); 946 entity.GetType().GetProperty("TimeType").SetValue(entity, ddl_TimeType.SelectedValue, null); 947 948 } 949else 950 { 951 952 entity.GetType().GetProperty("Duration").SetValue(entity, double.Parse(txt_Duration.Text.Trim()), null); 953 entity.GetType().GetProperty("TimeType").SetValue(entity, ddl_TimeType.SelectedValue, null); 954 } 955//} 956 957 } 958else 959 { 960 961 cell.Controls.Add(new LiteralControl("<div class=\"MessageSummary\">Please provide a number for Duration field</div>")); 962returnfalse; 963 964 } 965 } 966else 967 { 968if (ddl_TimeType.SelectedValue == "Order") 969 { 970 entity.GetType().GetProperty("Duration").SetValue(entity, double.Parse("1"), null); 971 entity.GetType().GetProperty("TimeType").SetValue(entity, ddl_TimeType.SelectedValue, null); 972 973 } 974else 975 { 976 entity.GetType().GetProperty("Duration").SetValue(entity, null, null); 977 entity.GetType().GetProperty("TimeType").SetValue(entity, null, null); 978 } 979 980 } 981 982 } 983 } 984 } 985 } 986 } 987 988 989 UpdateList.Add(entity); 990 991 992//UpdateList.Add(entity); 993 994 NewRow: 995continue; 996 997#endregion 998 999 } 10001001#region Save New Data 10021003 Entity entityForTrans = System.Activator.CreateInstance(Type.GetType("ZstoreAdmin.Model." + EntityType)) as Entity; 10041005 Transaction trans = new Transaction(entityForTrans.DataConnectProviders); 10061007 ReturnValue result = new ReturnValue(); 10081009foreach (Entity entity in DeleteList) 1010 { 1011 result = entity.Delete(trans); 1012if (!result.Success) 1013 { 1014if (trans.InTransaction) 1015 trans.RollbackTransaction(); 1016returnfalse; 1017 } 1018 } 1019102010211022foreach (Entity entity in UpdateList) 1023 { 1024 result = entity.Update(trans); 1025if (!result.Success) 1026 { 1027if (trans.InTransaction) 1028 trans.RollbackTransaction(); 1029returnfalse; 1030 } 1031 } 103210331034 trans.CommitTransaction(); 10351036#endregion10371038#region Restore Grid State 10391040foreach (DataControlField field inthis.Columns) 1041 { 1042if (field is SMQGridViewField) 1043 { 1044 ((SMQGridViewField)field).IsEditing = false; 1045 } 1046 } 10471048#endregion10491050returntrue; 1051 } 10521053publicbool SaveChangesAfterValidation() 1054 { 1055returnthis.SaveChanges(); 1056 } 10571058privatestring SetGVNoRecordScript() 1059 { 10601061if (this.bHasRecord) 1062 { 1063return""; 1064 } 106510661067 StringBuilder sb = new StringBuilder(); 10681069 sb.Append("\r\n function SetGVNoRecord" + this.ClientID + "(){"); 1070 sb.Append("\r\n var gv = document.getElementById(‘" + this.ClientID + "‘);"); 1071 sb.Append("\r\n if(gv == null){ return;}"); 1072 sb.Append("\r\n var rowCount = gv.rows.length;"); 1073 sb.Append("\r\n for(var i = rowCount - 1 ; i > 0;i--){"); 1074 sb.Append("\r\n if(i == 1){"); 1075 sb.Append("\r\n for(var j =0 ; j < gv.rows[i].cells.length;j++){"); 1076 sb.Append("\r\n gv.rows[i].cells[j].innerHTML=‘ ‘;"); 1077 sb.Append("\r\n }"); 1078 sb.Append("\r\n }"); 1079 sb.Append("\r\n else {"); 1080 sb.Append("\r\n gv.deleteRow(i);"); 1081 sb.Append("\r\n }"); 1082 sb.Append("\r\n }"); 1083 sb.Append("\r\n }"); 1084 sb.Append("\r\n SetGVNoRecord" + this.ClientID + "();"); 10851086return sb.ToString(); 1087 } 1088 } 1089 }
using System; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.HtmlControls; using System.Collections; using System.Collections.Generic; using System.Text; using System.Web.UI.Design; using System.ComponentModel; using SILK2010; namespace FrameWorkV4.Controls { public class SMQGridViewField : BoundField { public bool CanEdit; public bool IsEditing { get { object o = ViewState["IsEditing"]; if (o == null) { returnfalse; } return (bool)o; } set { ViewState["IsEditing"] = value; } } public FieldType fieldType; publicstring ContentStatusName; publicstring FeatureLocation; publicstring StatusName; public SMQGridViewField() { } protectedoverridevoid InitializeDataCell(DataControlFieldCell cell, DataControlRowState rowState) { base.InitializeDataCell(cell, rowState); if (IsEditing) { switch (fieldType) { case FieldType.DateTime: //DateSelector dsl = new DateSelector(); //cell.Controls.Add(dsl);break; case FieldType.Status: DropDownList ddl = new DropDownList(); ddl.Items.Add(new ListItem("Active", "1")); ddl.Items.Add(new ListItem("Pending", "2")); ddl.Items.Add(new ListItem("Inactive", "3")); ddl.Attributes.Add("onchange", "TableViewer_Mark_Field_Altered(this);"); ddl.Attributes.Add("onfocus", "TableViewer_Set_Field_Defaults(this)"); cell.Controls.Add(ddl); break; case FieldType.Feature: DropDownList ddl_Feature = new DropDownList(); ddl_Feature.Items.Add(new ListItem("Top", "1")); ddl_Feature.Items.Add(new ListItem("Bottom", "2")); ddl_Feature.Attributes.Add("onchange", "TableViewer_Mark_Field_Altered(this);"); ddl_Feature.Attributes.Add("onfocus", "TableViewer_Set_Field_Defaults(this)"); cell.Controls.Add(ddl_Feature); break; case FieldType.CheckBox: CheckBox cbx = new CheckBox(); cbx.Attributes.Add("onclick", "TableViewer_Mark_Field_Altered(this);"); cbx.Attributes.Add("onfocus", "TableViewer_Set_Field_Defaults(this)"); cell.Controls.Add(cbx); break; case FieldType.CheckBoxFeature: CheckBox cbxfeature = new CheckBox(); cbxfeature.Attributes.Add("onclick", "TableViewer_Mark_Field_Altered(this);"); cbxfeature.Attributes.Add("onfocus", "TableViewer_Set_Field_Defaults(this)"); cell.Controls.Add(cbxfeature); break; case FieldType.MaxQty: TextBox txtMaxQty = new TextBox(); txtMaxQty.Width = new Unit("40%"); txtMaxQty.Attributes.Add("onkeyup", "TableViewer_Mark_Field_Altered(this);"); txtMaxQty.Attributes.Add("onfocus", "TableViewer_Set_Field_Defaults(this)"); cell.Controls.Add(txtMaxQty); break; case FieldType.Duration: TextBox txtDuration = new TextBox(); txtDuration.Width = new Unit("40%"); txtDuration.Attributes.Add("onkeyup", "TableViewer_Mark_Field_Altered(this);"); txtDuration.Attributes.Add("onfocus", "TableViewer_Set_Field_Defaults(this)"); cell.Controls.Add(txtDuration); DropDownList ddl_TimeType = new DropDownList(); ddl_TimeType.Items.Insert(0, new ListItem("Seconds", "Seconds")); ddl_TimeType.Items.Insert(1, new ListItem("Minutes", "Minutes")); ddl_TimeType.Items.Insert(2, new ListItem("Hours", "Hours")); ddl_TimeType.Items.Insert(3, new ListItem("Days", "Days")); ddl_TimeType.Items.Insert(4, new ListItem("Months", "Months")); ddl_TimeType.Items.Insert(5, new ListItem("Years", "Years")); ddl_TimeType.Items.Insert(6, new ListItem("Lifetime", "Lifetime")); ddl_TimeType.Items.Insert(7, new ListItem("Order", "Order")); ddl_TimeType.Attributes.Add("onchange", "TableViewer_Mark_Field_Altered(this);"); ddl_TimeType.Attributes.Add("onfocus", "TableViewer_Set_Field_Defaults(this)"); cell.Controls.Add(ddl_TimeType); break; case FieldType.PPStatus: DropDownList ddl_ppstatus = new DropDownList(); ddl_ppstatus.Items.Add(new ListItem("Active", "1")); ddl_ppstatus.Items.Add(new ListItem("Pending", "2")); ddl_ppstatus.Items.Add(new ListItem("Inactive", "3")); ddl_ppstatus.Attributes.Add("onchange", "TableViewer_Mark_Field_Altered(this);"); ddl_ppstatus.Attributes.Add("onfocus", "TableViewer_Set_Field_Defaults(this)"); cell.Controls.Add(ddl_ppstatus); break; default: TextBox txt = new TextBox(); txt.Width = new Unit("90%"); txt.Attributes.Add("onkeyup", "TableViewer_Mark_Field_Altered(this);"); txt.Attributes.Add("onfocus", "TableViewer_Set_Field_Defaults(this)"); cell.Controls.Add(txt); break; } } elseif (fieldType == FieldType.LinkButton) { LinkButton lbt = new LinkButton(); lbt.CommandName = "Sel"; cell.Controls.Add(lbt); } elseif (fieldType == FieldType.Delete) { this.IsEditing = false; CheckBox cbx = new CheckBox(); cbx.Attributes.Add("onclick", "if (this.checked) this.parentNode.style.backgroundColor = ‘Red‘; else this.parentNode.style.backgroundColor = ‘‘;"); cell.Controls.Add(cbx); } } protectedoverridevoid OnDataBindField(object sender, EventArgs e) { Control control = (Control)sender; GridViewRow row = control.NamingContainer as GridViewRow; object dataValue = this.GetValue(control.NamingContainer); if (fieldType == FieldType.Status) { if (dataValue != null) { switch (dataValue.ToString().ToUpper()) { case"ACTIVE": row.BackColor = System.Drawing.ColorTranslator.FromHtml("#F2F2F2"); break; case"PENDING": row.BackColor = System.Drawing.ColorTranslator.FromHtml("#FCD5E5"); row.Font.Italic = true; break; case"INACTIVE": row.BackColor = System.Drawing.ColorTranslator.FromHtml("#FFF3CE"); break; } } } if (IsEditing) { if (this.fieldType == FieldType.DateTime) { //if (dataValue != null) //{ // if (dataValue.GetType().Name == "DateTime") // { // ((DateSelector)control.Controls[0]).DateTime = (DateTime)dataValue; // } // else // { // try // { // ((DateSelector)control.Controls[0]).DateTime = DateTime.Parse(dataValue.ToString()); // } // catch // { } // } //} } if (this.fieldType == FieldType.TextBox) { if (dataValue != null) ((TextBox)control.Controls[0]).Text = dataValue.ToString(); } if (this.fieldType == FieldType.LinkButton) { if (dataValue != null) ((TextBox)control.Controls[0]).Text = dataValue.ToString(); } if (this.fieldType == FieldType.CheckBox) { if (dataValue != null) ((CheckBox)control.Controls[0]).Checked = (bool)dataValue; } if (this.fieldType == FieldType.Int) { if (dataValue != null) ((TextBox)control.Controls[0]).Text = dataValue.ToString(); } if (this.fieldType == FieldType.MaxQty) { if (dataValue != null) ((TextBox)control.Controls[0]).Text = dataValue.ToString(); } if (this.fieldType == FieldType.Double) { if (dataValue != null) ((TextBox)control.Controls[0]).Text = dataValue.ToString(); } if (this.fieldType == FieldType.Status) { if (dataValue != null) { switch (dataValue.ToString().ToUpper()) { case"ACTIVE": ((DropDownList)control.Controls[0]).SelectedValue = "1"; break; case"PENDING": ((DropDownList)control.Controls[0]).SelectedValue = "2"; break; case"INACTIVE": ((DropDownList)control.Controls[0]).SelectedValue = "3"; break; } } } if (this.fieldType == FieldType.PPStatus) { if (dataValue != null) { switch (dataValue.ToString().ToUpper()) { case"ACTIVE": ((DropDownList)control.Controls[0]).SelectedValue = "1"; break; case"PENDING": ((DropDownList)control.Controls[0]).SelectedValue = "2"; break; case"INACTIVE": ((DropDownList)control.Controls[0]).SelectedValue = "3"; break; } } } if (this.fieldType == FieldType.Duration) { if (dataValue != null) { string[] _info = dataValue.ToString().Split(‘‘); if (_info.Length == 2) { if (!string.IsNullOrEmpty(_info[0].ToString())) { ((TextBox)control.Controls[0]).Text = _info[0].ToString(); } if (!string.IsNullOrEmpty(_info[1].ToString())) { ((DropDownList)control.Controls[1]).SelectedValue = _info[1].ToString(); } } } } } elseif (control.Controls.Count > 0 && this.fieldType == FieldType.LinkButton) { if (dataValue != null) { ((LinkButton)control.Controls[0]).Text = dataValue.ToString(); ((LinkButton)control.Controls[0]).CommandArgument = ((GridViewRow)control.Parent).RowIndex.ToString(); } } else { base.OnDataBindField(sender, e); } } } publicenum FieldType { TextBox, CheckBox, Status, LinkButton, Delete, DateTime, Int, Double, Feature, CheckBoxFeature, Duration, MaxQty, PPStatus, } }
原文:http://www.cnblogs.com/hellolong/p/3991090.html
内容总结
以上是互联网集市为您收集整理的ASP.net 自定义控件GridView全部内容,希望文章能够帮你解决ASP.net 自定义控件GridView所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。