如何FindControl方法的作品,如果我需要找到任何Control这里面GridView Template,更具体ItemTemplate?
FindControl
Control
GridView
Template
ItemTemplate
我有一个,hyperlink但找不到它。
hyperlink
问题已用代码更新
GridView 代码如下:
<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>
RowDataBound父母的事件GridView如下。
RowDataBound
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(); } }
该hyperlink hlPlus是hyperlink场里GridView的模板字段(项目模板)。
hlPlus
尝试这个:
foreach(GridViewRow row in GridView1.Rows) { if(row.RowType == DataControlRowType.DataRow) { HyperLink myHyperLink = row.FindControl("myHyperLinkID") as HyperLink; } }
如果要处理RowDataBound事件,则如下所示:
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) { if(e.Row.RowType == DataControlRowType.DataRow) { HyperLink myHyperLink = e.Row.FindControl("myHyperLinkID") as HyperLink; } }