#c# #asp.net #vb.net #gridview
#c# #asp.net #vb.net #gridview
Вопрос:
Я пытаюсь извлечь значение, заполненное в текстовом поле templatefield, встроенном в gridview. Я пытался сделать это несколькими разными способами, но продолжаю получать сообщения об ошибках. Я могу извлечь значение из раскрывающегося элемента управления templatefield, встроенного в тот же gridview.
Разметка:
<asp:TemplateField HeaderText="Renewal Date" >
<ItemTemplate>
<ajaxToolkit:CalendarExtender ID="cexRenewalDate" runat="server" TargetControlID="txtRenewalDate" PopupPosition="TopRight"
Format="MM/dd/yyyy" PopupButtonID="btnimgCalendar" />
<asp:TextBox ID="txtRenewalDate" runat="server" CssClass="RenewalDateTextBoxStyle"
onKeyPress="javascript: return false;" onPaste="javascript: return false;"/>
<asp:ImageButton ID="btnimgCalendar" runat="server" ImageUrl="~/Images/Calendar.png" CssClass="CalendarImageButtonStyle"/>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Action">
<ItemTemplate>
<asp:DropDownList ID="drpOFActions" runat="server" CssClass="ActionDropDownStyle"/>
<asp:LinkButton ID="lnkOFCommit" runat="server" Text=" Commit " OnClick="lnkCommitOF_Click" CssClass="CommitLinkButtonStyle"
OnClientClick="return confirm('Are you sure you want to complete this action?');"
CommandArgument='<%# Container.DataItemIndex %>' />
</ItemTemplate>
</asp:TemplateField>
Код позади:
Dim temp As String = CType(grdGeneratedOrderForms.Rows(rowIndex).FindControl("txtRenewalDate"), TextBox)
Это приводит к тому, что ‘System.Web.UI.Control’ не может быть преобразован в ‘System.Windows.Формы.Ошибка текстового поля.
Я также пытался использовать это по чьему-то предложению:
Dim temp As String = TryCast(grdGeneratedOrderForms.Rows(rowIndex).FindControl("txtRenewalDate"), System.Web.UI.Control.TextBox)
Это выдает тип ‘System.Web.UI.Control.Текстовое поле не определено ошибка.
Однако, когда я использую приведенное ниже значение для извлечения моего раскрывающегося списка, у меня нет проблем:
Dim Action As Integer = TryCast(grdGeneratedOrderForms.Rows(rowIndex).FindControl("drpOFActions"), DropDownList).SelectedValue
Вот мои объявления пространства имен:
Imports Oracle.DataAccess.Client
Imports System.IO
Imports System.Windows.Forms
Imports Aspose.Words
Imports Aspose.Words.Tables
Imports Ionic.Zip
Любые идеи будут высоко оценены…Спасибо!
Ответ №1:
Попробуйте это вместо этого. Я думаю, что у вас есть конфликт пространства имен в ваших операторах using
Dim temp As String = CType(grdGeneratedOrderForms.Rows(rowIndex).FindControl("txtRenewalDate"), System.Web.UI.WebControls.TextBox).Text
Комментарии:
1. Спасибо, Киран. Это также дает мне тип ‘System.Web.UI.Control. Текстовое поле не определено ошибка. Я добавил свои объявления пространства имен в исходное сообщение.
2. Можете ли вы отладить код и проверить, какое значение имеет grdGeneratedOrderForms . Строки (RowIndex). FindControl(«txtRenewalDate»)?
3. Не могли бы вы подсказать мне, как это сделать? Я пытался выяснить, как просматривать значения объектов в gridview во время отладки, но безуспешно. Извините, если это материал для начинающих.
4. Поместите точку разрыва в строку, которую вы хотите разорвать. Когда извлечение останавливается во время выполнения, выберите часть кода, например grdGeneratedOrderForms. Строки (RowIndex). FindControl(«txtRenewalDate»), щелкните правой кнопкой мыши -> Добавить просмотр.
5. Это приложение Windows или веб? В упомянутом вопросе asp.net . Почему вы импортируете систему пространств имен. Windows. Формы? Можете ли вы также импортировать System.Web.UI.WebControls? Я внес изменения в ответ, можете ли вы попробовать это?