У меня такой код:

        <asp:TemplateField HeaderText="Aprovar/Reprovar" ItemStyle-HorizontalAlign="Center">
            <ItemTemplate>
                <asp:ImageButton ID="imbAprovar" runat="server" 
                    ImageUrl="~/images/Png0803.png" 
                    OnClientClick="return confirm('Confirma aprovação do chamado?');"
                    CommandName="APROVAR" 
                    CommandArgument='<%# Eval("nIDChamado") %>' 
                    Height="30" Width="30" 
                    Visible="true" />
                <asp:ImageButton ID="imbReprovar" runat="server" 
                    ImageUrl="~/images/Png0798.png"
                    OnClientClick="return confirm('Confirma não aprovação do chamado?');" 
                    CommandName="REPROVAR"
                    CommandArgument='<%# Eval("nIDChamado") %>' 
                    Height="30" Width="30" 
                    Visible="true"/>
                <ajaxToolkit:Rating ID="AvaliacaoChamado" runat="server" 
                    BehaviorID= '<%# Eval("nIDChamado") %>'
                    CurrentRating="3"
                    MaxRating="5"
                    StarCssClass="ratingStar"
                    WaitingStarCssClass="savedRatingStar"
                    FilledStarCssClass="filledRatingStar"
                    EmptyStarCssClass="emptyRatingStar"
                    OnChanged="AvaliacaoChamado_Changed"
                    Visible="false" />
            </ItemTemplate>

Что мне нужно сделать, так это скрыть imbAprovar и imbReprovar, показывая AvaliacaoChamado, когда я нажимаю imbAprovar или imbReprovar. Я знаю, что мне нужно изменить свойство Visible, но не знаю, как это сделать прямо здесь:

protected void GridPesquisar_RowCommand(object sender, GridViewCommandEventArgs e)
{
    //Change visiblility
}

Это очень обширный и разумный уже существующий код, который у меня нет особой свободы изменять, не влияя на всю систему, и я все еще новичок в ASP.NET и C #.

0
Bruno Albuquerque 21 Фев 2014 в 18:58

1 ответ

Лучший ответ

Чтобы получить строку, вы можете dp:

GridViewRow gvr = (GridViewRow)((Control)e.CommandSource).NamingContainer;

А затем найти кнопки и изменить их видимость:

Control buttonAprovar = gvr.FindControl("imbAprovar");
if (buttonAprovar != null)
{
    buttonAprovar.Visible = false;
}

И то же самое для второй кнопки.

1
Andrei 21 Фев 2014 в 19:02