2013-10-11 4 views
0

에 값을 복용하지 :DataList에 내가 다음 코드 한 updatecommand

 protected void Page_Load(object sender, System.EventArgs e) 
     { 
      if (!IsPostBack) { 
       bindList(); 
      } 
     } 

    protected void dlAgents_EditCommand(object source, System.Web.UI.WebControls.DataListCommandEventArgs e) 
    { 
     dlAgents.EditItemIndex = e.Item.ItemIndex; 
     bindList(); 
    } 

protected void dlAgents_ItemDataBound(object sender, System.Web.UI.WebControls.DataListItemEventArgs e) 
{ 
    if (e.Item.ItemType == ListItemType.AlternatingItem | e.Item.ItemType == ListItemType.Item) { 
     ((Label)e.Item.FindControl("lblName")).Text = e.Item.DataItem("AgentName"); 
     ((Label)e.Item.FindControl("lblAddress")).Text = e.Item.DataItem("Address"); 
     ((Label)e.Item.FindControl("lblContactNo")).Text = e.Item.DataItem("ContactNo"); 
     ((LinkButton)e.Item.FindControl("lnkLoginID")).Text = e.Item.DataItem("LoginEmailID"); 
    } 
} 

protected void dlAgents_UpdateCommand(object source, System.Web.UI.WebControls.DataListCommandEventArgs e) 
{ 


    GC.ExecuteCommand("update AgentMaster set Address='" + ((TextBox)e.Item.FindControl("txtAddress")).Text + "' , ContactNo='" + ((TextBox)e.Item.FindControl("txtContact")).Text + "' where agentid='" + e.CommandArgument + "'"); 
    dlAgents.EditItemIndex = -1; 
    bindList(); 
} 

를이 코드에서, updatecommand을 위해, 그것의 항상 예를 ​​들어 .. 텍스트 상자에 대한 빈 값을 복용. (TextBox)e.Item.FindControl("txtAddress")).Text이 텍스트 상자는 비어 있습니다. 적절한 값으로 업데이트 할 수없는 이유는 무엇입니까?

도와주세요.

+0

는 영문 참조 :이 방법으로 컨트롤을 찾을 수

시도 http://pastie.org/8394228 –

+0

나는 오랫동안 DataList에 사용하지 마십시오, 내가 당신을하지에 제안 미래에 매우 나쁜 인라인 SQL 문을 사용하십시오. – Sakthivel

답변

1

ItemTemplate에서 직접 이러한 컨트롤을 사용하면 정상적으로 작동하지만 그렇지 않은 경우에는 작동하지 않습니다. 필자가 아는 한 FindControl 메서드는 재귀가 아닙니다. 편집 모드에 대한 텍스트 상자를 사용하여

public static Control FindControlRecursive(Control control, string id) 
    { 

     if (control == null) return null; 


     Control c = control.FindControl(id); 

     if (c == null) 
     { 
      foreach (Control child in control.Controls) 
      { 
       c = FindControlRecursive(child, id); 
       if (c != null) break; 
      } 
     } 

     return c; 
    }