最近這段時間寫個系統,一些可以記錄下來的東西整理(4)

2010-06-22

隨著系統的慢慢完備,需要做到的功能也越來越多,畫面也要更方便些,所以又多了一些東西可以記錄一下的。

12. GridView的新增、修改、刪除按鈕的應用(1):在設定GridView的時候,可以加入CommandField,來做新增、修改、刪除。不過這個裡面的新增是跛腳的新增,怎麼說呢?只有能夠插入的Data控制項才能夠使用這個功能(如DetailView等),那對於要新增就要做一點方式來處理了。

首先對於CommandField,開啟了相關的按鈕。
接下來對OnRowCommand這個Event的Handler做一下處理。

1
2
3
4
5
6
7
8
protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
{
if (e.CommandName == "New")
{
GridView1.DataSourceID = "";
GridView1.DataBind();
}
}

這邊可以說明一下:新增的部份,CommandName是New,然後在抓到這個Event的時候,Bind一個空的DataSourceID給GridView,做什麼用呢?為了要觸發EmptyDataRow的Event,好在EmptyDataTemplate裡寫要新增的資料表格。

在EmptyDataTemplate裡做一個DetailsView來做新增的表格。

最後就只要Handle OnItemInsertring Event就好了。記得要Bind回去正確的DataSource給原來的GridView,不要又跑到空的新增畫面。

13. GridView的新增、修改、刪除按鈕的應用(2):對於修改的部份,就不用上述那麼麻煩了,只要注意OnRowDataBound適時的Bind相關資訊,以及OnRowEditing轉換狀態,OnRowCancelingEdit取消編輯。但是在OnRowDataBound的時候,因為GridView原始設計,導致在單數列可以以DataControlRowState.Edit,但是在雙數列的部份會變成DataControlRowState.Edit | DataControlRowState.Alternate兩個參數互相連集關係,所以在偵測(GridViewRowEventArgs.Row.RowState)是否要修改某列時,要注意考慮到上面情況。

14. DropDownList.aspx)的SelectXXX屬性的真義:DropDownList會常常在程式裡用到,通常也會根據一些特殊情況設定相關屬性,但是有時候可能會搞錯相關的意義,經過一些測試才知道問題在哪。以下就是相關說明。

所以基本上來說,有Index或Value就能設定DropDownList。但是好像沒有看Text設定的(原來以為SelectedItem可以),那有沒有變通方法呢?

如果你能確定你的DropDownList的Text都是獨一無二的,那可以使用DropDownList.Items.FindByText()來得到ListItem,再拿該Instance的Value去指定DropDownList。

1
DDL2.SelectedValue = DDL2.Items.FindByText("data").Value;

15. 控制項的Parent概念:基本上ASP.NET網頁裡的控制項都有階層關係,有時候在某一些階段裡的Event Handler無法取得相關的Instance。這時候就需要Parent來取得相關資訊。譬如說在12裡提到的方法,裡面有個DropDownList,想要取得當時的DetailsView,就可以用連續的Parent取得。不過仍然是要看當時的架構而定。

1
DetailsView gvr = (DetailsView)DDL2.Parent.Parent.Parent.Parent

原來的Layout像這樣。


所以DDL2->TableCell->TableRow->Table->DetailsView,像這樣就能得到其他的Instance了。


應該可以,Dropdownlist的ListItem本身就可視為陣列,可以利用相關的方式來搜詢你要的文字


是沒錯啦,不過他是Listcontrol集合, 需要看text才知道index(需要iterative find),但是用FindByText()就直接完成了~


引用【…,有Index或Value就能設定DropDownList。但是好像沒有看Text設定的…】

 

DropDownList的Item設定是

dropdownlistDemo.item(i).text = “就這樣”


恩恩,這個是設定item文字的,但我內容是寫要從item找是哪個值,您這樣寫只是設定值喔~


Blog comments powered by Disqus