Как найти элемент управления в TemplateField GridView?
Как работает метод FindControl
если мне нужно найти какой-либо FindControl
Control
который находится внутри Template
GridView
, точнее ItemTemplate
?
У меня есть hyperlink
но она не может найти то же самое.
Вопрос обновлен кодом
- Получить значения DataKey в GridView RowCommand
- Как установить GridView внутри ScrollView
- Сетка изображений внутри ScrollView
- добавление текстового интерфейса для перетаскивания - Android / Java
- как найти элемент управления в шаблоне редактирования элемента?
Код GridView
приведен ниже:
i H <%--<a href="javascript:ShowChildGrid('div');"> <img id="imgdiv" alt="Click" border="0" src="http://sofru.miximages.com/c%23/plus.gif" runat="server" /> --%> B <%----%> <a href="javascript:ShowChildGridForBCol('div1');"> <img id="imgdiv1" alt="Click here" border="0" src="http://sofru.miximages.com/c%23/tempY.png" /> ID.Nr. Entry Date BU BE Product Family Project Name SOP Award Date Milestone Next Date Contract Status Prob.Of Success Key Account Sales SubRegion Growth Sales paOE mio$ Sales paAM mio$ <div id="div" style="display: none; position: relative; left: 110px;"> <div id="div1" style="display: none; position:relative; left: 110px;"> <%-- --%> <%-- --%> <%-- --%>
Событие RowDataBound
родительского GridView
выглядит следующим образом;
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 = "
"; //} //else //{ // e.Row.Cells[2].Text = "
"; //} #endregion #region "Commented code for Col.H" if (colH == "1") { e.Row.Cells[1].Text = string.Empty; //e.Row.Cells[1].Text = "
"; string js = string.Format("javascript:ShowChildGrid('div{0}');", colId); HyperLink lnk = (HyperLink)e.Row.FindControl("hlPlus"); if (lnk!=null) { lnk.NavigateUrl = js; lnk.ImageUrl = "http://sofru.miximages.com/c%23/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
(шаблон элемента).
- Условно скрыть CommandField или ButtonField в Gridview
- как связать выпадающий список в gridview?
- Пересечение столбцов GridLayoutManager Android Recyclerview
- Как получить значение ячейки по имени столбца не по индексу в GridView в asp.net
- Как скрыть столбцы в ASP.NET GridView с автогенерированными столбцами?
- Столбцы двух связанных таблиц базы данных в одном ASP.NET GridView с EntityDataSource
- Простой пример сетки Android, использующий RecyclerView с GridLayoutManager (например, старый GridView)
- Как реализовать Yii2 Modal Dialog на кнопке просмотра и обновления Gridview?
Попробуй это:
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; } }
Вы можете использовать этот код, чтобы найти HyperLink
в GridView. Использование e.Row.Cells[0].Controls[0]
чтобы найти первую позицию управления в 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"; } } } }
Я сделал это доступ к элементам управления внутри элемента управления ячейки. Найти во всех коллекциях управления.
ControlCollection cc = (ControlCollection)e.Row.Controls[1].Controls; Label lbCod = (Label)cc[1];
protected void gvTurnos_RowDataBound(object sender, GridViewRowEventArgs e) { try { if (e.Row.RowType == DataControlRowType.EmptyDataRow) { LinkButton btn = (LinkButton)e.Row.FindControl("btnAgregarVacio"); if (btn != null) { btn.Visible = rbFiltroEstatusCampus.SelectedValue == "1" ? true : false; } } } catch (Exception ex) { throw ex; } }
Если ваш GridView представляет собой базу данных, создайте индексный столбец в наборе результатов, который вы получите следующим образом:
select row_number() over(order by YourIdentityColumn asc)-1 as RowIndex, * from YourTable where [Expresion]
В командном элементе управления, который вы хотите использовать, значение свойства CommandArgument равно индексу строки таблицы DataSet RowIndex следующим образом:
Используйте событие OnRowCommand для запуска при нажатии кнопки ссылки следующим образом:
Наконец, код позади вас может делать все, что вам нравится, когда событие запускается следующим образом:
protected void gvwStuMsgBoard_RowCommand(object sender, GridViewCommandEventArgs e) { Panel pnlMsgBody = (Panel)gvwStuMsgBoard.Rows[Convert.ToInt32(e.CommandArgument)].FindControl("pnlMsgBody"); if(pnlMsgBody.Visible == false) { pnlMsgBody.Visible = true; } else { pnlMsgBody.Visible = false; } }
string textboxID; string da; textboxID = "ctl00$MainContent$grd$ctl" + (grd.Columns.Count + j).ToString() + "$txtDyna" + (k).ToString(); textboxID= ctl00$MainContent$grd$ctl12$ctl00; da = Request.Form(textboxID);