2009-12-27 5 views
4

부모 자식 그리드를 사용하고 하위 그리드에서 아이를 표시/숨기기 throw java 스크립트를 사용하고 있습니다. 아동 그리드 내가 지금은 이름 그리드 내부에 하나의 텍스트 상자를 격자 행 내에서 컨트롤 찾기

GridView NewDg = new GridView(); 
NewDg.ID = "dgdStoreWiseMenuStock"; 

TemplateField TOTAL = new TemplateField(); 
TOTAL.HeaderTemplate = new BusinessLogic.GridViewTemplateTextBox(ListItemType.Header, "TOTAL",e.Row.RowIndex); 
TOTAL.HeaderStyle.Width = Unit.Percentage(5.00); 
TOTAL.ItemTemplate = new BusinessLogic.GridViewTemplateTextBox(ListItemType.Item, "TOTAL", e.Row.RowIndex); 
NewDg.Columns.Add(TOTAL); 

NewDg.DataSource = ds; 
NewDg.DataBind(); 


NewDg.Columns[1].Visible = false; 
NewDg.Columns[2].Visible = false; 

System.IO.StringWriter sw = new System.IO.StringWriter(); 
System.Web.UI.HtmlTextWriter htw = new System.Web.UI.HtmlTextWriter(sw); 
NewDg.RenderControl(htw); 

처럼 Templatecolumns 실행 시간 바인딩 "TOTAL"나는이 텍스트 상자와 싶어 그 가치를 찾고 싶어요.

어떻게 얻을 수 있습니까?

+0

얼마나보십시오 :

주제에 큰 4 얘들 아 롤라에서 기사가있다? – user239146

답변

2

당신이 첫 번째 행과 첫 번째 셀에 대한 예를 들어 텍스트 상자의 값을 얻을 수 있습니다다시피 :

((TextBox) dgdStoreWiseMenuStock.Rows[0].Cells[0].Controls[1]).Text; 

또는 컨트롤의 인덱스를 변경하면 위의 라인 나던 일 0을 넣어.

4

사용자는 Controls 속성 또는 FindControl(string id) 방법을 이용하여 상기의 GridView의 해당 셀 내부 TextBox 컨트롤을 얻을 수 있었다 :

TextBox txtTotal = gv.Rows[index].cells[0].Controls[0] as TextBox; 

또는

TextBox txtTotal = gv.Rows[index].cells[0].Controls[0].FindControl("TOTAL") as TextBox; 

Index를 제 0 일 수도 행 또는 for 루프 내부의 반복기. 또한

, 당신의 GridView의 행을 통해 foreach 루프를 사용할 수 있습니다

foreach(GridViewRow row in gv.Rows) 
{ 
    TextBox txtTotal = row.cells[0].Controls[0].FindControl("TOTAL") as TextBox; 
    string value = txtTotal.Text; 

    // Do something with the textBox's value 
} 

을 게다가, 당신이 염두에두고, 당신은 웹 양식에 선언적으로 동적으로 (그리고하지의 GridView를 만드는 경우), 페이지 다시 게시 후이 컨트롤을 가져올 수 없습니다. Dynamic Web Controls, Postbacks, and View State

1

이것은 가능

TextBox txtTotal = (TextBox)gv.Rows[index].cells[0].FindControl("TOTAL"); 
string value = txtTotal.Text;