GridView RowCommand не запускается после удаления столбца - PullRequest
0 голосов
/ 18 октября 2018

У меня есть GridView с некоторыми данными и парой столбцов LinkButton.Если у пользователя нет определенной роли, я удаляю один из столбцов LinkButton из GridView.

Моя проблема в том, что когда я удаляю столбец, событие RowCommand больше не срабатывает, и все кнопки LinkButton исчезают при нажатии на них.

Примечание: I 'Я не привязываю сетку на PostBack, я не отключаю ViewState и попытался установить CausesValidation="false" без изменений.У всех, кого я обнаружил в Интернете с этой проблемой, была одна из этих проблем.

Если я закомментирую код, удаляющий столбец, все будет работать без проблем.

РЕДАКТИРОВАТЬ: Если я скрываю столбец вместо удаления с помощью gvMyGrid.Columns(0).Visible = False, все работает.

Почему удаление столбца препятствует запуску этого события?

Вот мой GridView:

<asp:GridView ID="gvMyGrid" runat="server" Visible="true" EmptyDataText="Nothing to show." AutoGenerateColumns="false" ShowHeaderWhenEmpty="true" Width="100%" AllowSorting="True">
    <HeaderStyle Font-Bold="True" ForeColor="White" Height="15px" BackColor="#46596b" Wrap="False"></HeaderStyle>
    <Columns>
        <asp:TemplateField HeaderText="">
            <ItemStyle HorizontalAlign="Center" VerticalAlign="Middle" Width="25" />
            <ItemTemplate>
                <asp:LinkButton ID="lnkFirst" CommandName="FirstCommand" CommandArgument='<%# Eval("MyID") %>' runat="server" Text='First'></asp:LinkButton>
            </ItemTemplate>
        </asp:TemplateField>
        <asp:BoundField DataField="data1" HeaderText="Data1"><ItemStyle Width="70px"></ItemStyle></asp:BoundField>
        <asp:BoundField DataField="data2" HeaderText="Data2"></asp:BoundField>
        <asp:TemplateField HeaderText="">
            <ItemStyle HorizontalAlign="Center" VerticalAlign="Middle" Width="25" />
            <ItemTemplate>
                <asp:LinkButton ID="lnkSecond" CommandName="SecondCommand" CommandArgument='<%# Eval("MyID") %>' runat="server" Text='Second'></asp:LinkButton>
            </ItemTemplate>
         </asp:TemplateField>
    </Columns>
</asp:GridView>

В моем коде:

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    If Not IsPostBack Then
        If Session("SpecialRole") <> "First" Then
            gvMyGrid.Columns.RemoveAt(0) 'Row Command fires if I comment this out
        End If

        BindMyGrid()
    End If
End Sub
...