星期二, 11月 10, 2009

Asp.net FindControl

以前沒用FindControl時都習慣把元素的id全列出來

int allControl = this.ListView1.Items[e.ItemIndex].Controls.Count;
for (int i = 0; i < allControl; i++)
{
this.Response.Write(this.ListView1.Items[e.ItemIndex].Controls[i].ClientID + "<br/>");
}


然後就可以找出欲取得值的控制項位置

this.SqlDataSourceActivityAlbumList.UpdateParameters["ActivityAlbumID"].DefaultValue = ((ImageButton)this.ListView1.Items[e.ItemIndex].Controls[1]).CommandArgument;


由於上面的方法會因控制項往後的位置變更又需要修改程式碼,
非常不好,所以改用FindControl(元素的id)是比較適合的
  this.SqlDataSourceActivityAlbumList.UpdateParameters["ActivityAlbumTitle"].DefaultValue = ((TextBox)this.ListView1.Items[e.ItemIndex].FindControl("tbAlbumTitle")).Text;
this.SqlDataSourceActivityAlbumList.UpdateParameters["ActivityAlbumDesc"].DefaultValue = ((TextBox)this.ListView1.Items[e.ItemIndex].FindControl("tbAlbumDesc")).Text;

沒有留言:

張貼留言

留個話吧:)