2008年10月15日 星期三

ListBox多選讀值

<asp:ListBox runat="server" ID="lb_orgSD" DataSourceID="sql_orgS" AutoPostBack="True" OnTextChanged="lb_orgSD_TextChanged" SelectionMode="Multiple"></asp:ListBox>





後端



protected void lb_orgSD_TextChanged(object sender, EventArgs e)

{

string tmpStr = "";

StringBuilder sb = new StringBuilder();

foreach (int i in lb_orgSD.GetSelectedIndices())

{

sb.AppendFormat("{0}{1}", tmpStr, lb_orgSD.Items[i].Value);

tmpStr = ",";
}

}






PS.

1.GetSelectedIndices() =>以遞增方式排序取值

2.StringBuilder =>長字串,需using System.Text;

2008年10月9日 星期四

指定drownlist的值

if (ds.Tables[0].Rows[0]["欄位名稱"] != null)
{ //方式A=>使用此種方式,若欄位值被改變,不符合SelectValue對應值時
,就會發生錯誤,就算有先過濾該欄位不為null值,
      也還是會有可能發生對應值不符合的情況
ddl_A.SelectValue = ds.Tables[0].Rows[0]["欄位名稱"].Tostring()
//方式B=>改用此種方式去指定值,再多一步驗証資料,
      就算找不到對應值也沒有ERROR發生
foreach(ListItem it in ddl_A.Items)
{
if (it.Value== ds.Tables[0].Rows[0]["欄位名稱"].Tostring())
it.Selected=true;
else
it.Selected=false;
}
}

2008年8月14日 星期四

ViewState加密

一、ASP.NET 1.1比前版本,請在 Web.Config 內做設定。
<configuration>
<system.web>
<machinekey validation="3DES">
< /SY S TEM.WEB>
< /CONFIGURATION>
二、ASP.NET 2.0 。
1.在 Web.Config 做設定 -
<configuration>
<system.web>
<pages viewstateencryptionmode="Auto">
< / SYSTEM.WEB>
< / CONFIGURATION>
ViewStateEncryptionMode有三種模式可設定,
a. Auto - 如果控制項呼叫 RegisterRequiresViewStateEncryption 方法要求加密,
則 ViewState 資訊會加密。
b. Always - ViewState 資訊永遠加密。
c. Never - ViewState 永遠不加密,即使控制項要求加密。
2.在每個 Page 做設定 -
<%@Page viewStateEncryptionMode="Always" %>
===========================================
以上參考來源
http://www.dotblogs.com.tw/jameswu/archive/2008/04/22/3058.aspx

2008年8月6日 星期三

找尋插入點-並插入你想要插入的字元





最近有一個需求是要做到像上方畫面這樣,要在WebForm下,當


第一欄的Textbox輸入時,按上標或下標button時,找到目前user的游標定位點,


然後上那裡插入上標的<sup></sup>


或下標的<sub></sub>html字元符號,


=========說明需求結束=================


遇到第一個困難點就是,


無法取得目前游標的插入點是在什麼地方,


因為WebForm好像沒有這個功能,所以我們只好在google上找到,


廣大的地球人來幫我們解答,很好此時javascript又出現了,


語法如下,因為是javascript所以我用圖片,需要的也可以跟我拿文字檔




================以上圖片是javascript的function===
再來,由於以上這個範例是Gridview中的TextBox跟Button要做定位點插入字串,
所以我們在Gridview的RowBound事件裡,去
//上標
TextBox tb_is_srvitem = (TextBox)e.Row.FindControl("tb_is_srvitem");
Button btn_UpSign =(Button)e.Row.FindControl("btn_UpSign");
btn_UpSign.Attributes["onclick"] = string.Format("AddOnPos('{0}','{1}')", tb_is_srvitem.ClientID, "<sup></sup>");

//下標
Button btn_DownSign = (Button)e.Row.FindControl("btn_DownSign");
btn_DownSign.Attributes["onclick"] = string.Format("AddOnPos('{0}','{1}')", tb_is_srvitem.ClientID, "<sub></sub>");


以上 !!!






物件導向概念-Interfact介面-讀書會

我對Interface的了解:
就他字面上的意思介面,他只是有一個形,沒有一個體
在網路上看到大家對他的討論,大概都是跟類別有關係,
就我的了解來說,我把Interface想像成一個“仲介“,
他在介紹“類別跟程式碼認識”,
類別->介面->程式碼,當你看到介面時,他可以很大聲的說,
我認識一個程式碼,他是在做把字串轉成數字的,但他只有認識,
他自己不會做,所以你還需要那個把字串轉成數字的程式碼,
你需要實作他才能達成這個類別的功能



我為什麼需要Interface:
就上一段的了解,我們知道可以介面可以幫助類別跟程式碼認識,
但是,就目前.NET的用法,我們可以用繼承的方式,去讓類別有實質的功能,
並不需要再透過一層介面的關係,去讓類別認識程式碼,感覺更複雜,
在“你搞懂抽象類別別與介面了嗎?(二)”,這篇文章裡,在比較抽象類別跟介面的關係中,他特別舉出了,介面的一個特色:
1. 介面強調的是定義一些功能給較不相干的類別使用,抽象類別主要是應用在關係密切(is a)的類別中使用。
2. 抽象類別一定屬於繼承架構,而且一定是父類別,介面可以讓毫無關係的類別來實作同一個介面,這點同時也呼應了第三點的說明。

這樣看,還是有點不懂,在他的說明裡有說到,
由架構設計的觀念來說,使用抽象類別一定與繼承有關係,但一個客戶端類別程式只能存在一個繼承關係,然而一個客戶端的類別程式卻可以實作多個不同的介面,因此經常有人使用介面來解決多重繼承的問題。
醬子有說服你,為什麼需要使用Interface了嗎?