2009年7月21日 星期二

[技術筆記] Repeater中尋找控制項

作  者:黃家瑞 精誠資訊 恆逸教育訓練中心講師
技術分類:程式設計

Repeater
開發ASP.NET程式時,Repeater是一個非常實用的控制項,可是實際操作時總會遇到點瓶頸,就像以下的例子(以北風northwind資料庫作為例子),當完成了將員工資料利用Repeater載入網頁後,面臨一個頭痛的問題,在每個Itemtemplate裡面的按鈕,btnCalc按下去後,希望可以算出該項目的資料(這裡以計算出到目前為止的年資為例),問題是,怎麼”找到”這一個項目中的控制項內容?
"    SelectCommand="SELECT [EmployeeID], [FirstName], [LastName], [HireDate]            FROM [Employees]">







  EmployeeId:<%#Eval("EmployeeId") %>


  Name:<%#Eval("FirstName") %> <%#Eval("LastName") %>


  HireDate:' />


  

  

  




>  


利用一個簡單的語法就可以找到按鈕旁邊的Label控制項。
protected void btnCalc_Click(object sender, EventArgs e) {
Label lblDate = (Label)((Button)sender).NamingContainer.FindControl("lblHireDate"); Label lblYr = (Label)((Button)sender).NamingContainer.FindControl("lblYear");   DateTime d;
if (DateTime.TryParse(lblDate.Text, out d))
 lblYr.Text = (DateTime.Today.Subtract(d).Days / 365.0).ToString("#.00");
}

NamingContainer可以在Repeater中找到目前控制項的容器(Container),在這個容器中,找到該控制項。這樣子就可以很容易的操作在Repeater中的控制項了。



沒有留言: