2011-07-03 4 views

답변

5

컨트롤을 추가 할 열에 PlaceHolder 컨트롤을 배치하십시오. 그 다음의 GridView의 RowDataBound 이벤트 내부에 자리 표시 자 컨트롤을 추가

편집 한

과 같이 표시됩니다 영문에서

그리드 열 : -

<Columns> 
<asp:TemplateField HeaderText="Column1"> 
    <ItemTemplate> 
     <asp:PlaceHolder runat='server' ID="column1PlaceHolder"></asp:PlaceHolder> 
    </ItemTemplate> 
</asp:TemplateField> 
<asp:TemplateField HeaderText="Column2"> 
    <ItemTemplate> 
     <asp:PlaceHolder runat='server' ID="column2PlaceHolder"></asp:PlaceHolder> 
    </ItemTemplate> 
</asp:TemplateField> 
</Columns> 

과 같이 표시됩니다 귀하의 RowDataBound 이벤트 : -

public void GridView_RowDataBound(Object sender, GridViewRowEventArgs e) 
{ 
    if (column1NeedsControls) 
    { 
     PlaceHolder placeHolder = e.Row.FindControl("column1PlaceHolder") as PlaceHolder; 
     TextBox TextBox1 = new TextBox(); 
     placeHolder.Controls.Add(TextBox1); 
    } 

    if (column2NeedsControls) 
    { 
     PlaceHolder placeHolder = e.Row.FindControl("column2PlaceHolder") as PlaceHolder; 
     TextBox TextBox1 = new TextBox(); 
     placeHolder.Controls.Add(TextBox1); 
    } 
} 
+0

그래서 각 행에 텍스트 상자가 추가됩니다. 나는 두 개의 컬럼을 가지고 있지만, 어떻게 배치해야 할지를 어떻게 알 수 있습니까? 두 개의 컨트롤을 한 열에, 다른 컨트롤을 다른 컨트롤에 넣으려고합니다. –

+0

당신은'placeHolder.Controls.Add' 메서드를 호출하여 다음과 같이 추가 할 수 있습니다. 당신이 원하는대로 많은 컨트롤. 마찬가지로 두 개의 열이있는 경우 각 열 (두 개의 서로 다른 ID가 분명히 있음)에 자리 표시자를 배치하고 동일한 작업을 수행해야합니다. –

+0

하지만 두 번째 열 또는 첫 번째 열에 액세스하는 방법 .. 행이 추가 될 때 이벤트가 트리거됩니다 .. 왜 내가 이벤트가 필요합니까 /? .. 어떻게해야합니까? –

관련 문제