¿Cómo funciona el método FindControl
si necesito encontrar Control
que esté dentro de GridView
Template
, más específicamente ItemTemplate
?¿Cómo encontrar el control en TemplateField de GridView?
Tengo un hyperlink
pero no puede encontrar lo mismo.
Pregunta actualizado con el código de
GridView
Código es el siguiente:
<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>
El RowDataBound
caso de que el padre es GridView
de la siguiente manera;
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();
}
}
El hyperlink
hlPlus
es un campo hyperlink
dentro de campo de plantilla GridView
's (plantilla de elemento).
myHyperLink está llegando nula ...! –
publique su código! – Arief
¡Pregunta actualizada! –