GridVIew: переключить кнопку редактирования и обновления при редактировании - PullRequest
1 голос
/ 06 марта 2012

Мне нужен GridView с видимой кнопкой «Редактировать» и скрытой кнопкой «Обновить», а также при включении режима редактирования для видимости переключения строк, как в этом примере здесь (в середине страницы я думаю, что он делает с AutoGenerateEditButton = "true").

Это мои кнопки сетки:

    <asp:TemplateField ItemStyle-CssClass="campoCentrado">
        <ItemTemplate>
            <asp:ImageButton ID="btEditarGrid" ImageUrl="~/imagenes/edit.png" CommandName="Edit" OnClick="GridView_EditMode" runat="server" />
            <asp:ImageButton ID="btGuardarGrid" ImageUrl="~/imagenes/guardar.png" CommandName="Update" Visible="false" runat="server" />
        </ItemTemplate>
        <FooterTemplate>
            <asp:ImageButton ID="btInsertarGrid" ImageUrl="~/imagenes/insertar.png" OnClick="GridView_Insert" runat="server" />
        </FooterTemplate>
    </asp:TemplateField>

И мой RowEditingevent, который не работает:

Private Sub gvCuestionarios_RowEditing(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewEditEventArgs) Handles gvCuestionarios.RowEditing
    If e.NewEditIndex >= 0 Then
        Dim guardar As ImageButton = gvCuestionarios.Rows(e.NewEditIndex).FindControl("btGuardarGrid")
        If Not guardar Is Nothing Then
            guardar.Visible = True
        End If
    End If
End Sub

Спасибо

Ответы [ 2 ]

3 голосов
/ 06 марта 2012

Если вы хотите добавить кнопку «Редактировать» в качестве ImageButton, самый простой способ - использовать CommandField:

<asp:GridView ID="gvCuestionarios" runat="server" 
    OnRowCancelingEdit="gvCuestionarios_RowCancelingEdit"
    OnRowEditing="gvCuestionarios_RowEditing" 
    OnRowUpdating="gvCuestionarios_RowUpdating">
    <Columns>
        <asp:CommandField 
            ShowEditButton="true"
            ShowCancelButton="true"
            ButtonType="Image" 
            EditImageUrl="~/imagenes/edit.png"
            UpdateImageUrl="~/imagenes/guardar.png"
            CancelImageUrl="~/imagenes/cancel.png" />
    </Columns>
</asp:GridView>

Обратите внимание, что я добавил кнопку отмены с cancel.png в качестве изображения, котороепоявится, когда сетка перейдет в режим редактирования.

В событии RowEditing вам не нужно беспокоиться о ручном скрытии или отображении кнопок, вы просто устанавливаете EditIndex и перепривязываете свои данные:

Private Sub gvCuestionarios_RowEditing(ByVal sender As Object, ByVal e As GridViewEditEventArgs) Handles gvCuestionarios.RowEditing
    gvCuestionarios.EditIndex = -1
    BindData()
End Sub

Единственная проблема, что этоЭто может быть связано с тем, что в этом столбце не будет настраиваемого шаблона нижнего колонтитула.Вероятно, в любом случае есть лучший способ сделать то, что вы пытаетесь сделать с помощью этого нижнего колонтитула.

2 голосов
/ 06 марта 2012

В вашем TemplateField добавьте EditItemTemplate и поместите внутри него кнопку обновления. Когда вы находитесь в режиме редактирования, не имеет значения, сделаете ли вы кнопку видимой или нет в ItemTemplate, она не будет отображаться. Это потому, что вы находитесь в EditItemTemplate, а не в ItemTemplate.

<asp:TemplateField ItemStyle-CssClass="campoCentrado">
    <ItemTemplate>
        <asp:ImageButton ID="btEditarGrid" ImageUrl="~/imagenes/edit.png" CommandName="Edit" runat="server" />
    </ItemTemplate>
    <EditItemTemplate>
        <asp:ImageButton ID="btUpdateGrid" ImageUrl="~/imagenes/guardar.png" CommandName="Update" runat="server" />
        <!-- This would be to cancel out of Edit mode, would need to have a cancel.png -->
        <asp:ImageButton ID="btGuardarGrid" ImageUrl="~/imagenes/cancel.png" CommandName="Cancel" runat="server" />
    </EditItemTemplate>
    <FooterTemplate>
        <asp:ImageButton ID="btInsertarGrid" ImageUrl="~/imagenes/insertar.png" OnClick="GridView_Insert" runat="server" />
    </FooterTemplate>
</asp:TemplateField>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...