Member 10843905 Ответов: 1

Не могу получить доступ к кнопке из - за кода


это за кодом
Protected Sub gvData_RowCommand(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewCommandEventArgs) Handles gvData.RowCommand
       'lblError.Text = ""

       Dim oButton As Button = fvData.FindControl("BtnRevisi")

       'Dim oTextbox As TextBox = DirectCast(Me.fvData.FindControl("txtRevisi"), TextBox)
       lblError.Visible = False
       If e.CommandName = "Select" Then
           fvData.ChangeMode(FormViewMode.Edit)
           fvData.Caption = "Edit Data"
           oButton.Visible = False
       End If
       If e.CommandName = "Revisi" Then

       End If

   End Sub


это на html
<pre><asp:FormView ID="fvData" runat="server" DataSourceID="sdsForm"

    DefaultMode="Edit" Width="100%" DataKeyNames="ID">
    <EditItemTemplate>
        <table cellpadding=0 cellspacing=0 width="100%">
            <tr>
                <td colspan="2">
                    <hr />
                </td>
            </tr>

            <tr>
                <td colspan="2">
                     </td>
            </tr>
            <tr>
                <td colspan="2" class="FooterStyle">
                    <uc1:BtnUpdate ID="BtnUpdate1" runat="server" />
                    <uc2:BtnDelete ID="BtnDelete1" runat="server" />
                    <uc3:BtnCancel ID="BtnCancel1" runat="server" />

                    <asp:Button ID="btnRevisi" runat="server" OnClick="btnSave_Click" Style="font-size: 8pt; cursor: pointer; background-position: left; background-image: url(../images/Save.gif); background-repeat: no-repeat; text-align: right;" Text="Revisi" ToolTip="Save" ValidationGroup="Pricing" Width="55px" />

                </td>
            </tr>
            <tr>
                <td colspan="2">
                    <hr />
                </td>
            </tr>
        </table>
    </EditItemTemplate> 


в сущности, я просто хочу захватить свойство id из btnRevisi, потому что местоположение btnRevisi находится в formview, поэтому идентификатор btnRevisi не может быть вызван. а ошибка отображения после запуска-это btnRevisi, это ничто ссылка на объект не установлена на экземпляр объекта.

Что я уже пробовал:

Я объявил с помощью DirectCast, результат все тот же (ссылка на объект не установлена на экземпляр объекта). например, код Dim oButton As Button = fvData.FindControl("btnRevisi")

обуттон.Visible = False в этом разделе это ошибка

CHill60

Действительно ли кнопка была отображена на странице при вызове этого кода?

Member 10843905

я имею в виду, что эта проблема заключается в том, как получить идентификатор btnRevisi, когда я нажимаю командную кнопку в gridview

когда вариант командное поле в качестве нажмите любую ошибку на этом участке
обуттон.Видна = Ложь


этот код на gridview :
&ЛТ;в ASP:GridView в идентификатор="gvData" атрибут runat="сервер" AllowPaging="true" в AllowSorting="истинный"
AutoGenerateColumns="False" DataSourceID="sdsGrid" Width="100%"
DataKeyNames="идентификатор" заголовок="PreCosting" RowHeaderColumn="идентификатор"и GT;
<столбцы>

&ЛТ;АСП:вариант командное поле в качестве ButtonType="изображение" SelectImageUrl="~/images/edit.gif" ShowSelectButton="правда"и GT;
<ItemStyle Width="20px" HorizontalAlign="Center" />



<emptydatatemplate>
<uc6:NoDataFound ID="NoDataFound1" runat="сервер" />

1 Ответов

Рейтинг:
1

Richard Deeming

Кнопка, которую вы пытаетесь найти, находится в EditItemTemplate.

Элементы управления в этом шаблоне не создаются до тех пор, пока FormView переключается в режим "правка" и привязывается к своему источнику данных.

Что-то вроде этого должно сработать:

If e.CommandName = "Select" Then
    fvData.Caption = "Edit Data"
    fvData.ChangeMode(FormViewMode.Edit)
    fvData.DataBind()
    
    Dim oButton As Button = fvData.FindControl("btnRevisi")
    oButton.Visible = False
End If

Однако если все, что вы делаете, - это устанавливаете видимость кнопки, вы можете сделать это в разметке:
<asp:Button ID="btnRevisi" runat="server" Visible="False" ...