Как найти id с помощью hiddenfield в gridview on button click & button is outside gridview C#
How to find id using Hiddenfield in Gridview on button click & button is outside Gridview C# I am trying but its showing error "Object reference not set to an instance of an object." on "string strhfId = (gvRow.FindControl("hfId") as HiddenField).Value;" I have tried different too HiddenField hfId = (HiddenField)gridData.SelectedRow.Cells[0].FindControl("hfId"); but error is same
Что я уже пробовал:
protected void lnkUpdate_Click(object sender, EventArgs e) { //HiddenField hfId = (HiddenField)gridData.SelectedRow.Cells[0].FindControl("hfId"); //HiddenField strId = ((HiddenField)gridData.Rows[0].FindControl("hfIdValue")); //String value = strId.Value; LinkButton btn = sender as LinkButton; GridViewRow gvRow = btn.NamingContainer as GridViewRow; string strhfId = (gvRow.FindControl("hfId") as HiddenField).Value; try { //HiddenField hfIdc = (HiddenField)gridData.SelectedRow.Cells[0].FindControl("hfIdValue"); List<SqlParameter> parameters = new List<SqlParameter> { }; parameters.Add(new SqlParameter("@P_APPLICATION_ID", strhfId)); parameters.Add(new SqlParameter("@P_APPLICATION_NAME", txtApplicationName.Text)); parameters.Add(new SqlParameter("@P_MODE", "E")); string strResponse = objAppFunctionModule.ExecuteNonQueryMethod(strUSP_APPLICATION_MST, parameters); PopulateGrid(); } catch (Exception ex) { lblResponse.Text = ex.Message; } }
Разметка;
<asp:GridView ID="gridData" runat="server" AutoGenerateColumns="False" OnRowDataBound="gridData_RowDataBound" RowStyle-HorizontalAlign="Center" ShowHeaderWhenEmpty="true" OnRowCommand="gridData_RowCommand" EmptyDataText="No Data for the Selected Value" BackColor="White" BorderColor="#c5c5c5" BorderWidth="1px" Width="100%" CellPadding="4" AllowPaging="True"> <columns> <asp:templatefield> <ItemStyle /> <HeaderStyle CssClass="ItemStyle" /> <headertemplate> <asp:CheckBox ID="chkAll" class="cbAll" runat="server" onclick="javascript:SelectAllCheckboxes1(this);" /> <itemtemplate> <asp:CheckBox ID="chkMultiDelete" runat="server" /> <asp:TemplateField HeaderText="Application Name"> <ItemStyle /> <HeaderStyle CssClass="ItemStyle" /> <itemtemplate> <asp:Label ID="lblApplicationName" runat="server" Text='<%#Eval("APPLICATION_NAME") %>'> <asp:HiddenField runat="server" ID="hfId" Value='<%#Eval("APPLICATION_ID")%>'> <asp:TemplateField HeaderText="Edit"> <ItemStyle /> <HeaderStyle CssClass="ItemStyle" /> <itemtemplate> <asp:LinkButton ID="lnkEdit" class="btn btn-default" CommandName="EditButton" CommandArgument='<%# ((GridViewRow) Container).RowIndex + ";" %>' runat="server">Edit
F-ES Sitecore
Вам также нужно будет разместить надбавку, неясно, где находится это скрытое поле. Если скрытое поле является asp:Hidden и находится за пределами gridview, то вы должны иметь возможность ссылаться на него как обычно
нпид.Значение
Pahi2317
&ЛТ;в ASP:GridView в идентификатор="файле griddata" атрибут runat="сервер" AutoGenerateColumns="false" - в OnRowDataBound="gridData_RowDataBound"
RowStyle-HorizontalAlign="Center" ShowHeaderWhenEmpty="true" OnRowCommand="gridData_RowCommand"
EmptyDataText="нет данных для выбранного значения" BackColor="Белый" BorderColor="#c5c5c5" BorderWidth="1px" Width="100%"
CellPadding="4" AllowPaging="True">
<колонки>
<asp:templatefield>
<ItemStyle />
<HeaderStyle CssClass="ItemStyle" />
<headertemplate>
&ЛТ;АСП:чекбокс с ID="chkAll" класс="cbAll" атрибут runat="сервер" функция onclick="JavaScript для:SelectAllCheckboxes1(этот);" /&ГТ;
<itemtemplate>
<asp:CheckBox ID="chkMultiDelete" runat="server" />
<asp:TemplateField HeaderText="имя приложения">
<ItemStyle />
<HeaderStyle CssClass="ItemStyle" />
<itemtemplate>
&ЛТ;АСП:метка идентификатор="lblApplicationName" атрибут runat="сервер" текст=в'<%#Ивала("ИМЯ_ПРИЛОЖЕНИЯ") %&ГТ; в'>
&ЛТ;как ASP:HiddenField значение runat="сервер" идентификатор="нпид" значение=в'<%#Ивала("APPLICATION_ID")%&ГТ; в'>
<asp:TemplateField HeaderText="Edit">
<ItemStyle />
<HeaderStyle CssClass="ItemStyle" />
<itemtemplate>
&ЛТ;как ASP:LinkButton элемент ID="lnkEdit" класс="БТН БТН-умолчанию" Имя_команды="нажмите кнопку Изменить" CommandArgument='&л;%# ((GridViewRow) контейнер).Параметр rowindex + ";" %&ГТ;' атрибут runat="сервер"и GT;Редактировать
Richard Deeming
"... кнопка находится вне таблицы ..."
"btn.NamingContainer as GridViewRow"
Если кнопка находится за пределами GridView
, тогда почему вы предполагаете, что его контейнер именования будет GridViewRow
?