2011-09-08 15 views
2

컨트롤을 GridView에 동적으로 추가해야하므로 PlaceHolder를 추가했지만 오류가 발생합니다. 내의 GridView에 대한 마크 업을 여기에
동적으로 gridview에 컨트롤 추가

Object reference not set to an instance of an object.

것 : 자리 표시 자에 컨트롤을 추가하는 동안

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) 
{ 
    PlaceHolder plachldr = e.Row.FindControl("PlaceHolder2") as PlaceHolder; 
    Button btn = new Button() { ID = "btnShhow", Text = "Show" }; 
    plachldr.Controls.Add(btn); 

    PlaceHolder placeholder = e.Row.FindControl("PlaceHolder1") as PlaceHolder; 
    TextBox txt1 = new TextBox(); 
    placeholder.Controls.Add(txt1); 
} 

, 나에게 다음과 같은 오류를주고있다

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" OnSelectedIndexChanging="GridView1_SelectedIndexChanging" onrowdatabound="GridView1_RowDataBound">  
    <Columns> 
     <asp:BoundField DataField="Name" HeaderText="Name" /> 
     <asp:BoundField DataField="Salary" HeaderText="Salary" />  
     <asp:TemplateField> 
      <ItemTemplate> 
       <asp:PlaceHolder ID="PlaceHolder1" runat="server"></asp:PlaceHolder> 
      </ItemTemplate> 
     </asp:TemplateField>  
     <asp:TemplateField> 
      <ItemTemplate> 
       <asp:PlaceHolder ID="PlaceHolder2" runat="server"></asp:PlaceHolder>  
      </ItemTemplate> 
     </asp:TemplateField>  
    </Columns> 
</asp:GridView> 
+0

GridView 내에서 가질 수있는 모든 행 유형에 PlaceHolder2가 없으면 행의 유형을 확인해야합니다. 그래서 이런 식으로 : if (e.Row.RowType == DataControlRowType.DataRow) // 여기에 자리 표시 자 코드 –

+0

@Pawan Bhise - 해결 된 문제 –

답변

1

당신은 plachldr를 확인해야 또는 자리 표시자가 null이 아니며도 확인하십시오. RowType

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) 
{ 

    if(if (e.Row.RowType == DataControlRowType.DataRow) 
    { 
    PlaceHolder plachldr = e.Row.FindControl("PlaceHolder2") as PlaceHolder; 
    if(plachldr!=null) 
    { 
    Button btn = new Button() { ID = "btnShhow", Text = "Show" }; 
    plachldr.Controls.Add(btn); 
    } 

    PlaceHolder placeholder = e.Row.FindControl("PlaceHolder1") as PlaceHolder; 
    if(placeholder!=null) 
    { 
    TextBox txt1 = new TextBox(); 
    placeholder.Controls.Add(txt1); 
    } 
    } 

} 
+0

예, 두 자리 표시자가 null 인 것을 보여줍니다. 이제 어떻게해야합니까? –

+0

일부 작동 코드로 PLZ를 사용할 수 있습니까? –

+0

@Pawan Bhise이 - 당신이 –

관련 문제