Как получить данные из поля шаблона в gridview - PullRequest
2 голосов
/ 30 января 2012

В настоящее время я работаю над моим последним проектом года.На веб-странице, которая загружает данные в gridview, в каждой строке есть кнопка «on», которая вызывает всплывающее окно и запрашивает ошибку, чтобы написать внутри ** текстового поля ** и отправить эту ошибку на сервер.На стороне сервера мне требуются два значения: первое - это первичный ключ этой строки, а ошибка - в текстовом поле **.Это легко получить значение первичного ключа, но я не могу получить значение в стороне от текстового поля.Я прилагаю код файла .aspx:

</p> <pre><code><asp:GridView ID="gvPODetails" runat="server" DataSourceID="Inspection_SqlDataSource" EnableModelValidation="True" AllowSorting="True" AutoGenerateColumns="False" BackColor="#CCCCCC" BorderColor="Black" BorderStyle="Solid" BorderWidth="3px" CellPadding="4" ForeColor="Black" CellSpacing="2"> <Columns> <asp:BoundField DataField="ProductCode" HeaderText="ProductCode" SortExpression="ProductCode" /> <asp:BoundField DataField="MaterialCode" HeaderText="MaterialCode" SortExpression="MaterialCode" /> <asp:TemplateField> <ItemStyle BorderStyle="None" BorderColor="Transparent" BorderWidth="0px" /> <ItemTemplate> <asp:LinkButton ID="lnkbtnOk" OnClick="Ok_Click" CommandArgument='<%# Eval("Identity")%>' runat="server" Text="Ok"></asp:LinkButton> <asp:LinkButton ID="lnkbtnReject" runat="server" Text="Reject"></asp:LinkButton> <asp:Panel ID="popUp_Data" runat="server" CssClass="modelPopup" Style="display: none;"> <table style="padding: 10px 10px 10px 10px; width: 100%;"> <tr> <td> </td> <td align="right"> <input id="close_popup" type="image" src="../Images/closebox.gif" /> </td> </tr> <tr valign="top"> <td align="right"> <asp:Label ID="lblError" Text="Error" runat="server" CssClass="fontStyle"></asp:Label> </td> <td align="left"> <asp:TextBox ID="txtError" runat="server" CssClass="ta" TextMode="MultiLine"></asp:TextBox> </td> </tr> <tr> <td> </td> <td align="left"> <asp:Button ID="btnSubmit" runat="server" CssClass="sbmt" Text="Reject Item" OnClick="Reject_Click" CommandArgument='<%# Eval("Identity")%>' /> </td> </tr> </table> </asp:Panel> <asp:ModalPopupExtender ID="popUp_Data_ModalPopupExtender" runat="server" DynamicServicePath="" Enabled="True" BackgroundCssClass="modelBackground" PopupControlID="popUp_Data" TargetControlID="lnkbtnReject" CancelControlID="close_popup"> </asp:ModalPopupExtender> </ItemTemplate> </asp:TemplateField> </Columns> <EmptyDataTemplate> <asp:Label runat="server" ID="lblNoDataFound" Text="No Machine Found."></asp:Label> </EmptyDataTemplate> </asp:GridView>

Мне нужны данные внутри текстового поля с идентификатором txtError .

1 Ответ

2 голосов
/ 30 января 2012

Поскольку это повторяющийся элемент, вы не можете получить к нему доступ напрямую, используя его идентификатор. Вместо этого вы можете использовать FindControl следующим образом:

var textBoxAux = gridView.Rows[index].FindControl("txtError") as TextBox;

Вам нужно найти индекс строки в событии, которое вы обрабатываете.

РЕДАКТИРОВАТЬ : поиск индекса ...

Передайте DataItemIndex в CommandArgument (вместо удостоверения личности), если применимо.

CommandArgument='<%# Container.DataItemIndex %>'

Ссылка: ASP.NET GridView RowIndex As CommandArgument

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...