Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to find Control in TemplateField of GridView?

How does FindControl method works if I need to find any Control which is inside GridView Template, more specifically ItemTemplate?

I have a hyperlink but it is not able to find the same.

Question updated with code

GridView Code is below:

<asp:GridView ID="grvYourOpportunities" runat="server" AllowPaging="True" AutoGenerateColumns="False"         DataKeyNames="ID#,B,H" PageSize="20" CellPadding="4" ForeColor="#333333" GridLines="Both"         OnRowDataBound="grvYourOpt_RowDataBound">         <HeaderStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />         <RowStyle BackColor="#F7F6F3" ForeColor="#333333" />         <Columns>           <asp:TemplateField>                 <HeaderTemplate>                     i                 </HeaderTemplate>                 <ItemTemplate>                     <%# Eval("i") %>                 </ItemTemplate>             </asp:TemplateField>              <asp:TemplateField>                 <HeaderTemplate>                     H                 </HeaderTemplate>                 <ItemTemplate>                      <%--<a href="javascript:ShowChildGrid('div<%# Eval("ID#") %>');">                     <img id="imgdiv<%# Eval("ID#") %>" alt="Click" border="0" src="plus.gif" runat="server" />  </a>  --%>                      <asp:HyperLink runat="server" ID="hlPlus" ImageUrl="~/plus.gif"></asp:HyperLink>                  </ItemTemplate>             </asp:TemplateField>             <asp:TemplateField>                 <HeaderTemplate>                     B                 </HeaderTemplate>                 <ItemTemplate>                     <%--<%# Eval("B") %>--%>                     <a href="javascript:ShowChildGridForBCol('div1<%# Eval("ID#") %>');">                         <img id="imgdiv1<%# Eval("ID#") %>" alt="Click here" border="0" src="tempY.png" />                     </a>                 </ItemTemplate>             </asp:TemplateField>             <asp:TemplateField>                 <HeaderTemplate>                     ID.Nr.                 </HeaderTemplate>                 <ItemTemplate>                     <%# Eval("ID#")%>                 </ItemTemplate>             </asp:TemplateField>             <asp:TemplateField>                 <HeaderTemplate>                     Entry Date                 </HeaderTemplate>                 <ItemTemplate>                     <%# Eval("Entry Date") %>                 </ItemTemplate>             </asp:TemplateField>             <asp:TemplateField HeaderStyle-Width="20px" ItemStyle-Width="20px">                 <HeaderTemplate>                     BU                 </HeaderTemplate>                 <ItemTemplate>                     <%# Eval("BU")%>                 </ItemTemplate>             </asp:TemplateField>             <asp:TemplateField>                 <HeaderTemplate>                     BE                 </HeaderTemplate>                 <ItemTemplate>                     <%# Eval("BE")%>                 </ItemTemplate>             </asp:TemplateField>             <asp:TemplateField>                 <HeaderTemplate>                     Product Family                 </HeaderTemplate>                 <ItemTemplate>                     <%# Eval("Product Family")%>                 </ItemTemplate>             </asp:TemplateField>             <asp:TemplateField>                 <HeaderTemplate>                     Project Name                 </HeaderTemplate>                 <ItemTemplate>                     <%# Eval("Project Name")%>                 </ItemTemplate>             </asp:TemplateField>             <asp:TemplateField>                 <HeaderTemplate>                     SOP                 </HeaderTemplate>                 <ItemTemplate>                     <%# Eval("SOP")%>                 </ItemTemplate>             </asp:TemplateField>             <asp:TemplateField>                 <HeaderTemplate>                     Award Date                 </HeaderTemplate>                 <ItemTemplate>                     <%# Eval("Award Date")%>                 </ItemTemplate>             </asp:TemplateField>             <asp:TemplateField>                 <HeaderTemplate>                     Milestone Next Date                 </HeaderTemplate>                 <ItemTemplate>                     <%# Eval("Milestone Next Date")%>                 </ItemTemplate>             </asp:TemplateField>             <asp:TemplateField>                 <HeaderTemplate>                     Contract Status                 </HeaderTemplate>                 <ItemTemplate>                     <%# Eval("Contract Status")%>                 </ItemTemplate>             </asp:TemplateField>             <asp:TemplateField>                 <HeaderTemplate>                     Prob.Of Success                 </HeaderTemplate>                 <ItemTemplate>                     <%# Eval("ProbSuccess")%>                 </ItemTemplate>             </asp:TemplateField>             <asp:TemplateField>                 <HeaderTemplate>                     Key Account                 </HeaderTemplate>                 <ItemTemplate>                     <%# Eval("Key Account")%>                 </ItemTemplate>             </asp:TemplateField>             <asp:TemplateField>                 <HeaderTemplate>                     Sales SubRegion                 </HeaderTemplate>                 <ItemTemplate>                     <%# Eval("Sales SubRegion")%>                 </ItemTemplate>             </asp:TemplateField>             <asp:TemplateField>                 <HeaderTemplate>                     Growth                 </HeaderTemplate>                 <ItemTemplate>                     <%# Eval("Growth")%>                 </ItemTemplate>             </asp:TemplateField>             <asp:TemplateField>                 <HeaderTemplate>                     Sales p.a.OE mio$                 </HeaderTemplate>                 <ItemTemplate>                     <%# Eval("SalesOE")%>                 </ItemTemplate>             </asp:TemplateField>             <asp:TemplateField>                 <HeaderTemplate>                     Sales p.a.AM mio$                 </HeaderTemplate>                 <ItemTemplate>                     <%# Eval("SalesAM")%>                 </ItemTemplate>             </asp:TemplateField>             <%--GridView 2, 3--%>             <asp:TemplateField>                 <ItemTemplate>                     <tr>                         <td align="left" style="margin-left: 10px;" colspan="5">                             <div id="div<%# Eval("ID#") %>" style="display: none; position: relative; left: 110px;">                                 <asp:GridView ID="GridView2" runat="server" Width="40%" AutoGenerateColumns="false"                                     DataKeyNames="Entry Date" EmptyDataText="No orders for this customer." CellPadding="0"                                     ForeColor="#333333" GridLines="Both">                                     <HeaderStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />                                     <RowStyle BackColor="#F7F6F3" ForeColor="#333333" />                                     <HeaderStyle CssClass="header" />                                     <RowStyle CssClass="row" />                                     <Columns>                                         <asp:TemplateField>                                             <HeaderTemplate>                                             </HeaderTemplate>                                             <ItemTemplate>                                                 <%# Eval("ID#")%>                                             </ItemTemplate>                                         </asp:TemplateField>                                         <asp:TemplateField>                                             <HeaderTemplate>                                             </HeaderTemplate>                                             <ItemTemplate>                                                 <%# Eval("Entry Date") %>                                             </ItemTemplate>                                         </asp:TemplateField>                                         <asp:TemplateField>                                             <HeaderTemplate>                                             </HeaderTemplate>                                             <ItemTemplate>                                                 <%# Eval("ID#")%>                                             </ItemTemplate>                                         </asp:TemplateField>                                         <asp:TemplateField ItemStyle-Wrap="false">                                             <HeaderTemplate>                                             </HeaderTemplate>                                             <ItemTemplate>                                                 <%# Eval("Other Text") %>                                             </ItemTemplate>                                         </asp:TemplateField>                                     </Columns>                                 </asp:GridView>                             </div>                         </td>                     </tr>                     <tr>                         <td align="left" colspan="19">                             <div id="div1<%# Eval("ID#") %>" style="display: none; position:relative; left: 110px;">                                 <asp:GridView ID="GridView3" runat="server" AutoGenerateColumns="false" DataKeyNames="Entry Date"                                     EmptyDataText="No orders for this customer." CellPadding="0" ForeColor="#333333"                                     GridLines="Both" Width="100%">                                     <HeaderStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />                                     <RowStyle BackColor="#F7F6F3" ForeColor="#333333" />                                     <%--<HeaderStyle CssClass="header" />                                     <RowStyle CssClass="row" />--%>                                     <Columns>                                          <%--<asp:TemplateField>                                             <HeaderTemplate>                                             </HeaderTemplate>                                             <ItemTemplate>                                             </ItemTemplate>                                         </asp:TemplateField>                                         <asp:TemplateField>                                             <HeaderTemplate>                                             </HeaderTemplate>                                             <ItemTemplate>                                             </ItemTemplate>                                         </asp:TemplateField>                                         <asp:TemplateField>                                             <HeaderTemplate>                                             </HeaderTemplate>                                             <ItemTemplate>                                             </ItemTemplate>                                         </asp:TemplateField>--%>                                          <asp:TemplateField>                                             <HeaderTemplate>                                             </HeaderTemplate>                                             <ItemTemplate>                                                 <%# Eval("ID#")%>                                             </ItemTemplate>                                         </asp:TemplateField>                                        <%-- <asp:TemplateField>                                             <HeaderTemplate>                                             </HeaderTemplate>                                             <ItemTemplate>                                                 <%# Eval("Entry Date") %>                                             </ItemTemplate>                                         </asp:TemplateField>                                         <asp:TemplateField HeaderStyle-Width="20px" ItemStyle-Width="20px">                                             <HeaderTemplate>                                             </HeaderTemplate>                                             <ItemTemplate>                                                 <%# Eval("BU")%>                                             </ItemTemplate>                                         </asp:TemplateField>                                         <asp:TemplateField>                                             <HeaderTemplate>                                             </HeaderTemplate>                                             <ItemTemplate>                                                 <%# Eval("BE")%>                                             </ItemTemplate>                                         </asp:TemplateField>                                         <asp:TemplateField>                                             <HeaderTemplate>                                             </HeaderTemplate>                                             <ItemTemplate>                                                 <%# Eval("Product Family")%>                                             </ItemTemplate>                                         </asp:TemplateField>                                         <asp:TemplateField>                                             <HeaderTemplate>                                             </HeaderTemplate>                                             <ItemTemplate>                                                 <%# Eval("Project Name")%>                                             </ItemTemplate>                                         </asp:TemplateField>                                         <asp:TemplateField>                                             <HeaderTemplate>                                             </HeaderTemplate>                                             <ItemTemplate>                                                 <%# Eval("SOP")%>                                             </ItemTemplate>                                         </asp:TemplateField>                                         <asp:TemplateField>                                             <HeaderTemplate>                                             </HeaderTemplate>                                             <ItemTemplate>                                                 <%# Eval("Award Date")%>                                             </ItemTemplate>                                         </asp:TemplateField>                                         <asp:TemplateField>                                             <HeaderTemplate>                                             </HeaderTemplate>                                             <ItemTemplate>                                                 <%# Eval("Milestone Next Date")%>                                             </ItemTemplate>                                         </asp:TemplateField>                                         <asp:TemplateField>                                             <HeaderTemplate>                                             </HeaderTemplate>                                             <ItemTemplate>                                                 <%# Eval("Contract Status")%>                                             </ItemTemplate>                                         </asp:TemplateField>                                         <asp:TemplateField>                                             <HeaderTemplate>                                             </HeaderTemplate>                                             <ItemTemplate>                                                 <%# Eval("ProbSuccess")%>                                             </ItemTemplate>                                         </asp:TemplateField>                                         <asp:TemplateField>                                             <HeaderTemplate>                                             </HeaderTemplate>                                             <ItemTemplate>                                                 <%# Eval("Key Account")%>                                             </ItemTemplate>                                         </asp:TemplateField>                                         <asp:TemplateField>                                             <HeaderTemplate>                                             </HeaderTemplate>                                             <ItemTemplate>                                                 <%# Eval("Sales SubRegion")%>                                             </ItemTemplate>                                         </asp:TemplateField>                                         <asp:TemplateField>                                             <HeaderTemplate>                                             </HeaderTemplate>                                             <ItemTemplate>                                                 <%# Eval("Growth")%>                                             </ItemTemplate>                                         </asp:TemplateField>                                         <asp:TemplateField>                                             <HeaderTemplate>                                             </HeaderTemplate>                                             <ItemTemplate>                                                 <%# Eval("SalesOE")%>                                             </ItemTemplate>                                         </asp:TemplateField>                                         <asp:TemplateField>                                             <HeaderTemplate>                                             </HeaderTemplate>                                             <ItemTemplate>                                                 <%# Eval("SalesAM")%>                                             </ItemTemplate>                                         </asp:TemplateField>--%>                                     </Columns>                                 </asp:GridView>                             </div>                         </td>                     </tr>                 </ItemTemplate>             </asp:TemplateField>         </Columns>     </asp:GridView> 

The RowDataBound event of the parent GridView is as below;

Protected void grvYourOpt_RowDataBound(object sender, GridViewRowEventArgs e) {     if (e.Row.RowType == DataControlRowType.DataRow)     {         string colId = grvYourOpportunities.DataKeys[e.Row.RowIndex].Values[0].ToString();         string colB = grvYourOpportunities.DataKeys[e.Row.RowIndex].Values[1].ToString();         string colH = grvYourOpportunities.DataKeys[e.Row.RowIndex].Values[2].ToString();          #region "Commented Code for Col.B"          //if (colB == "Y")         //{         //    e.Row.Cells[2].Text = "<img src='tempY.png'>";          //}         //else         //{         //    e.Row.Cells[2].Text = "<img src='tempN.png'>";         //}         #endregion          #region "Commented code for Col.H"          if (colH == "1")         {             e.Row.Cells[1].Text = string.Empty;             //e.Row.Cells[1].Text = "<a href=''> <img id='13' alt='Click' border='0' src='plus.gif'/> </a>";             string js = string.Format("javascript:ShowChildGrid('div{0}');", colId);             HyperLink lnk = (HyperLink)e.Row.FindControl("hlPlus");             if (lnk!=null)             {                 lnk.NavigateUrl = js;                 lnk.ImageUrl = "plus.gif";                 lnk.Visible = true;             }             //Page.ClientScript.RegisterStartupScript(this.GetType(), "HCol", "ShowChildGrid("+ colId + ");", true);         }         else         {             e.Row.Cells[1].Text = string.Empty;             e.Row.Cells[1].Text = "";         }         #endregion          DataTable dt1 = new DataTable();         DataTable dt2 = new DataTable();          DataRow dr1 = null;         DataRow dr2 = null;         DataRow dr3 = null;         DataRow dr4 = null;         DataRow dr5 = null;         DataRow dr7 = null;          DataRow r = dt1.NewRow();          DataSet ds1 = new DataSet();         DataSet ds2 = new DataSet();          dt1.TableName = "Opportunity1";          dt1.Columns.Add(new System.Data.DataColumn("ID#", typeof(System.String)));         dt1.Columns.Add(new System.Data.DataColumn("Entry Date", typeof(System.String)));         dt1.Columns.Add(new System.Data.DataColumn("Other Text", typeof(System.String)));         ds1.Tables.Add(dt1);          dt2.Columns.Add(new System.Data.DataColumn("ID#", typeof(System.String)));         dt2.Columns.Add(new System.Data.DataColumn("Entry Date", typeof(System.String)));         dt2.Columns.Add(new System.Data.DataColumn("BU", typeof(System.String)));         dt2.Columns.Add(new System.Data.DataColumn("BE", typeof(System.String)));         dt2.Columns.Add(new System.Data.DataColumn("Product Family", typeof(System.String)));         dt2.Columns.Add(new System.Data.DataColumn("Project Name", typeof(System.String)));         dt2.Columns.Add(new System.Data.DataColumn("SOP", typeof(System.String)));         dt2.Columns.Add(new System.Data.DataColumn("Award Date", typeof(System.String)));         dt2.Columns.Add(new System.Data.DataColumn("Milestone Next Date", typeof(System.String)));         dt2.Columns.Add(new System.Data.DataColumn("Contract Status", typeof(System.String)));         dt2.Columns.Add(new System.Data.DataColumn("ProbSuccess", typeof(System.String)));         dt2.Columns.Add(new System.Data.DataColumn("Key Account", typeof(System.String)));         dt2.Columns.Add(new System.Data.DataColumn("Sales SubRegion", typeof(System.String)));         dt2.Columns.Add(new System.Data.DataColumn("Growth", typeof(System.String)));         dt2.Columns.Add(new System.Data.DataColumn("SalesOE", typeof(System.String)));         dt2.Columns.Add(new System.Data.DataColumn("SalesAM", typeof(System.String)));         ds2.Tables.Add(dt2);          dr2 = dt1.NewRow();         dr3 = dt1.NewRow();         dr4 = dt1.NewRow();         dr5 = dt1.NewRow();          dr1["ID#"] = "";         dr2["ID#"] = "";         dr3["ID#"] = "";         dr4["ID#"] = "";         dr5["ID#"] = "";          dr1["Entry Date"] = "18/01/2010";         dr2["Entry Date"] = "19/01/2010";         dr3["Entry Date"] = "20/01/2010";         dr4["Entry Date"] = "21/01/2010";         dr5["Entry Date"] = "14/01/2010";          dr1["Other Text"] = "17:25CET changed by"; // - product family: ABS, Milestone Date: 23.02.1022, Contract Status: Signed, Probability of success: 100%";         dr2["Other Text"] = "18:44CET changed by"; //- product family: ABS, Milestone Date: 23.02.1022, Contract Status: Signed, Probability of success: 100%";         dr3["Other Text"] = "19:25CET changed by"; //- product family: ABS, Milestone Date: 23.02.1022, Contract Status: Signed, Probability of success: 100%";         dr4["Other Text"] = "14:25CET changed by"; //- product family: ABS, Milestone Date: 23.02.1022, Contract Status: Signed, Probability of success: 100%";         dr5["Other Text"] = "11:25CET changed by"; //- product family: ABS, Milestone Date: 23.02.1022, Contract Status: Signed, Probability of success: 100%";          dt1.Rows.Add(dr1);         dt1.Rows.Add(dr2);         dt1.Rows.Add(dr3);         dt1.Rows.Add(dr4);         dt1.Rows.Add(dr5);          GridView gv12 = (GridView)e.Row.FindControl("GridView2");         gv12.DataSource = ds1.Tables[0];         gv12.DataBind();          for (int i = 0; i < gv12.Rows.Count; i++)         {             gv12.RowStyle.BackColor = System.Drawing.Color.Gray;         }           dr7 = dt2.NewRow();          dr7["ID#"] = "11-0101";         dr7["Entry Date"] = "19/01/2010";         dr7["BU"] = "VDC";         dr7["BE"] = "ASES";         dr7["Product Family"] = "Car Air Systems";         dr7["Project Name"] = "Example";         dr7["SOP"] = "09/08/2011";         dr7["Award Date"] = "10/2011";         dr7["Milestone Next Date"] = System.DateTime.Today.ToString("dd.MM.yyyy");         dr7["Contract Status"] = "won";         dr7["ProbSuccess"] = "70%";         dr7["Key Account"] = "E-Paccar";         dr7["Sales SubRegion"] = "North America";         dr7["Growth"] = "10%";         dr7["SalesOE"] = "150";         dr7["SalesAM"] = "18";          dt2.Rows.Add(dr7);          GridView gv13 = (GridView)e.Row.FindControl("GridView3");         gv13.DataSource = ds2.Tables[0];         gv13.DataBind();     } } 

The hyperlink hlPlus is a hyperlink field inside GridView's Template Field(Item Template).

like image 955
xorpower Avatar asked Jul 29 '11 13:07

xorpower


People also ask

How to find Control in GridView in vb net?

You can only get the controls inside <ItemTemplate> in your button click as gridview is in Normal display Mode. <EditItemTemplate> controls are rendered only when GridView enters Edit mode. So, you need to get the value of the Label: Label1 here actually, which has the same value and is inside <ItemTemplate> .

How to access GridView Control in c#?

The row index can be easily determined using the CommandArgument property of GridViewCommandEventArgs object and using the row index, the GridView Row is determined. The TextBox and DropDownList controls are referenced using the FindControl method of the GridView Row by passing the ID of the control as parameter.

How to find GridView Control on page load in asp net?

Page_Load event isn't the right event to access controls within GridView as you might get an unexpected error when the grid is not bounded yet with data. The RowDataBound event should be the right place.


2 Answers

Try this:

foreach(GridViewRow row in GridView1.Rows) {     if(row.RowType == DataControlRowType.DataRow) {         HyperLink myHyperLink = row.FindControl("myHyperLinkID") as HyperLink;     } } 

If you are handling RowDataBound event, it's like this:

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) {     if(e.Row.RowType == DataControlRowType.DataRow)     {         HyperLink myHyperLink = e.Row.FindControl("myHyperLinkID") as HyperLink;     } } 
like image 181
Arief Avatar answered Sep 28 '22 14:09

Arief


You can use this code to find HyperLink in GridView. Use of e.Row.Cells[0].Controls[0] to find First position of control in GridView.

protected void AspGrid_RowDataBound(object sender, GridViewRowEventArgs e) {       if(e.Row.RowType == DataControlRowType.DataRow)     {         DataRowView v = (DataRowView)e.Row.DataItem;                     if (e.Row.Cells.Count > 0 && e.Row.Cells[0] != null && e.Row.Cells[0].Controls.Count > 0)         {             HyperLink link = e.Row.Cells[0].Controls[0] as HyperLink;             if (link != null)             {                                         link.Text = "Edit";             }                        }             } } 
like image 24
TechnicalKalsa Avatar answered Sep 28 '22 16:09

TechnicalKalsa