2009-02-08

DataTable - 每個Cell可以存放物件

這次在撰寫需求程式時,遇到一個狀況
就是我希望在UI的DataGridView控制項上
顯示我自訂的Table資料
可是這個Table中,我也希望能同時將其餘的資訊也保留進來
只是顯示的時候只顯示我要的欄位

這樣說好像有點模糊,譬如以下圖示
image
我希望的是當我顯示Document Name的時候
也同時將Document的所有相關資訊,存進這個自訂的Table
(每一個DataRow代表不同的Document資訊)
以方便讓我的程式去做資料的讀取
(DataGridView顯示方式,是去指定DataGridView.DataSource屬性)

其實,每個DataRow的Cell可以存放物件
不單單只可以存放字串
只是要注意的是,若要在DataGridView上顯示
必須要overrride ToString()這個Method

再這裡我自訂一個QVFDocInfo Class,然後override ToString()

這樣就可以在我指定DataSource時,只秀出我要的字串
也同時將我的自訂物件存進DataTable裡。

public class QVFDocInfo
{
  private string docName;
  
  public string DocName
  {
    get { return docName.Replace("_",""); }            
  }
 
  private string obid;
 
  public string Obid
  {
    get { return obid; }
  }
 
  private string latestorAll;
 
  public string LatestorAll
  {
    set { latestorAll = value; 
  }
  
  get { return latestorAll; }            
  }
 
 
  #region Constructor
  public QVFDocInfo(string docName, string obid)
  {
    this.docName = docName;
    this.obid = obid;
  }
 
  public QVFDocInfo(string docName, string obid,string LatestorAll)
  {
    this.docName = docName;
    this.obid = obid;
    this.latestorAll = LatestorAll;
  }
  #endregion        
 
  public override string ToString()
  {  
    return docName.Replace("_","");
  }
}

沒有留言:

張貼留言