2009年3月2日 星期一

C# 的 Windows Form 下,ComboBox使用自定物件

    通常在ComboBox, ListBox下,列表的字串,在DB都會有相對應的ID,但是這些ID可能不是連續的數字,甚至不是數字。那在處理的過程中,就必須使用查表的方式,來找出選擇的字串所對應的ID。如此在程式的寫作上非常不方便,也不好維護。

    在找MSDN有關ComboBox時,會發現它的Items屬性,包含的是Object,而不是String。因此由這個方向,可以猜出,ComboBox如何顯示Object在它的List中。查Object物件,通常都會發現ToString這個virtual function。也因此ComboBox應該也是使用這個function來顯示物件。

    同理,那ComboBox如何辦別在List中的物件,也是使用Object中的Equals,來辨認Object是否是相同的。

    因此只要在自定物件下,override這兩個函數,即可達到我們的目的。

    EX:

    class A {
        public String ID = null;
        public Stirng Title = null;
       
        public A(String id, String title) {
            this.ID = id;
            this.Title = title;
        }

        public override String ToString() {
            return Title;
        }

        public override bool Equals(object o) {
            if(o == null || GetType() != o.GetType()) return false;
            
           A tmp = (A)o;

           return (
tmp.Title.Equals(Title) && tmp.ID.Equals(ID));
        }

    }

MSSQL + FreeTDS + PHP 下的中文編碼問題

MSSQL 一般在中文的Windows 系統下,預設的編碼為 CP950,而非網頁常用的BIG5,因此在顯示在網頁時,必須做轉碼的動作。



1. 首先在 FreeTDS的config 裏,加一行:client charset = cp950

2. 依照網頁的編碼,使用 iconv 函式:比如網頁是UTF-8,則用iconv('CP950', 'UTF-8', $name);