NetAdvantage的UltraWebGrid的全選控件設計

InfraGIStics.WebUI.UltraWebGrid.UltraWebGrid的某一列進行全選,當然這一列的Type是Checkbox】

代碼很簡單,主要是註冊一段js,根據UltraWebGrid的實現特點,巧妙調用其js庫。這樣不要postback到Server端,避免無謂刷新。

兩個主要屬性是:

1.要設置的Grid的ID——ControlGridID;

2.要設置的Grid的列的索引號——CheckColumnIndex。

 

using System;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.ComponentModel;

namespace SelAllControl
{
 /// <summary>
 /// SelectAll 的摘要說明。
 /// </summary>
 [DefaultProperty("Text"),
  ToolboxData("<{0}:SelectAll runat=server></{0}:SelectAll>")]
 public class SelectAll : System.Web.UI.WebControls.CheckBox
 {
  private string m_strControlGridID;
  private int m_iColIndex;

  public SelectAll()
  {
   m_iColIndex = 0;
  }


  /// <summary>
  /// 獲取並設置需要控制的Grid的ID
  /// </summary>
  [Category("Appearance")]
  [Description("設置需要控制的Grid的ID")]
  public string ControlGridID
  {
   get
   { 
    return this.m_strControlGridID;
   }
   set
   {
    this.m_strControlGridID = value;
   }
  }

  /// <summary>
  /// 獲取並設置需要控制的Grid的CheckBox列的索引號
  /// 默認爲0
  /// </summary>
  [Category("Appearance")]
  [Description("設置需要控制的Grid的ID")]
  [DefaultValue(0)]
  public int CheckColumnIndex
  {
   get
   {
    return m_iColIndex;
   }
   set
   {
    m_iColIndex = value;
   }
  }

  private void AssignScript()
  {
   string strScript = "var strGridID = '"+this.ControlGridID+"'; if(null==strGridID || strGridID.length<=0){return;} try {var oGrid = o"+this.ControlGridID+"; var oRows = oGrid.Rows; var objCurState = document.getElementById('"+this.ClientID+"'); var objSetValue = objCurState.checked;  for(i=0;i<oRows.length;i++) { (oRows.getRow(i).getCell("+CheckColumnIndex.ToString()+")).setValue(objSetValue); }} catch(e){ return; }";
   base.Attributes.Add("onClick",strScript);
  }

  /// <summary>
  /// 將此控件呈現給指定的輸出參數。
  /// </summary>
  /// <param name="output"> 要寫出到的 HTML 編寫器 </param>
  protected override void Render(HtmlTextWriter output)
  {
   this.ID = this.ClientID;
   AssignScript();
   base.Render(output);
  }
 }
}

 

在註冊的js中o開始的那些變量實際上是借用了UltraWebGrid本身在客戶端聲明的一些js變量。getRow(),getCell(),setValue()等也是其js庫中自帶的函數。 

發佈了3 篇原創文章 · 獲贊 0 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章