none
Cambiar texto a boton de una columna button en un datagridview

    Pregunta

  • Buenos Dias

    Mi consulta es esta:

    Tengo un datagridview con una columna button, esos botones sirven para mostrar informacin mas detallada de los clientes que apaerecen en cada row del datagrid, el texto de cada boton es "Mostrar", lo que quiero es cambiar ese texto por "Cerrar" cuando se ha dado click en alguno y pues volver a "Mostrar" cuando vuelven a dar click. El codigo que tengo es el siguiente pero no me funciona.

    Private Sub DataGridView1_CellContentClick(sender As Object, e As DataGridViewCellEventArgs) Handles DataGridView1.CellContentClick Dim row As DataGridViewRow = DataGridView1.Rows(e.RowIndex) DataGridView1.Rows(0).Cells(16).Value = "Cerrar" DataGridView1.Rows(e.RowIndex).Cells(16).Value = "Cerrar"

    End Sub

    Hice modificacion en el codigo para que np se preste a malinterpretaciones, trate de modificar colocando la celda manual y con el valor que devuelve "e" pero ninguna surte efecto

    Agradezco cualquie colaboracion.


     Lenguaje VB .NET

    • Editado fertrones0 miércoles, 22 de marzo de 2017 23:58 Correccion del codigo
    miércoles, 22 de marzo de 2017 17:03

Respuestas

  • Para quien pueda interesar:

    Las sintaxis que estaba usando y que publique en el primer comentario son corretas, la razon por la cual no me cambiaba el texto de los botones era porque tenia puesto a "true" la propiedad "UseColumnTextForButtonValue", no se en que momento la modifique, lo unico es que toca modificar mediante un bucle la propiedad value de cada boton, pero ya funciona.

    Saludos



    • Marcado como respuesta fertrones0 viernes, 24 de marzo de 2017 0:51
    viernes, 24 de marzo de 2017 0:50

Todas las respuestas

  • Puedes hacer lo que quieres en el evento del grid RowDataBound pero no se como quieres mostrar la información, si quieres que se desplegué una fila con la informacion te podria pasar el codigo completo de dos grid anidados
    miércoles, 22 de marzo de 2017 18:14
  • Puedes hacer lo que quieres en el evento del grid RowDataBound pero no se como quieres mostrar la información, si quieres que se desplegué una fila con la informacion te podria pasar el codigo completo de dos grid anidados
    <asp:GridView ID="GvPedidos" runat="server" AutoGenerateColumns="False"
                        CellPadding="4" Width="100%"
                        Caption="Lista de Pedidos"
                        ShowHeaderWhenEmpty="True"  DataKeyNames="PedidoId,UsuarioId">
                        <Columns>
                            <asp:TemplateField>
                                <ItemTemplate>
                                    <img src="../../App_Themes/Tema/Imagenes/FlechaFrente.png" orderid="<%# Eval("PedidoId") %>" class="imgGrid" />
                                </ItemTemplate>
                                <HeaderStyle ForeColor="Black" HorizontalAlign="Center" VerticalAlign="Middle" />
                                <ItemStyle ForeColor="Black" HorizontalAlign="Center" VerticalAlign="Middle" />
                            </asp:TemplateField>
                            <asp:BoundField DataField="NumeroPedido" HeaderText="Pedido" SortExpression="NumeroPedido">
                                <HeaderStyle ForeColor="Black" HorizontalAlign="Center" VerticalAlign="Middle" />
                                <ItemStyle ForeColor="Black" HorizontalAlign="Center" VerticalAlign="Middle" />
                            </asp:BoundField>                        
                            <asp:BoundField DataField="ValorPedido" HeaderText="Total" SortExpression="ValorPedido" DataFormatString="{0:C0}">
                                <HeaderStyle ForeColor="Black" HorizontalAlign="Center" VerticalAlign="Middle" />
                                <ItemStyle ForeColor="Black" HorizontalAlign="Center" VerticalAlign="Middle" />
                            </asp:BoundField>
                            <asp:BoundField DataField="Fecha" HeaderText="Fecha" SortExpression="Fecha">
                                <HeaderStyle ForeColor="Black" HorizontalAlign="Center" VerticalAlign="Middle" />
                                <ItemStyle ForeColor="Black" HorizontalAlign="Center" VerticalAlign="Middle" />
                            </asp:BoundField>
                            <asp:BoundField DataField="Estado" HeaderText="Estado" SortExpression="Estado">
                                <HeaderStyle ForeColor="Black" HorizontalAlign="Center" VerticalAlign="Middle" />
                                <ItemStyle ForeColor="Black" HorizontalAlign="Center" VerticalAlign="Middle" />
                            </asp:BoundField>
                             <asp:TemplateField>
                                <ItemTemplate>
                                    <asp:ImageButton runat="server" ID="ImgPdf" ImageUrl="~/App_Themes/Tema/Imagenes/pdf.png" CssClass="imgPDF" CommandArgument='<%# DataBinder.Eval(Container, "RowIndex") %>' CommandName="PDF"/>
                                </ItemTemplate>
                                 <HeaderStyle ForeColor="Black" HorizontalAlign="Center" VerticalAlign="Middle" />
                                <ItemStyle ForeColor="Black" HorizontalAlign="Center" VerticalAlign="Middle" />
                            </asp:TemplateField>
                            <asp:TemplateField HeaderText="Pasar pedido a">
                                <ItemTemplate>
                                    <asp:Button runat="server" ID="BtnDespachado" Text="Despachado" CommandArgument='<%# DataBinder.Eval(Container, "RowIndex") %>' CommandName="Despachado"/>
                                    <asp:Button runat="server" ID="BtnVendido" Text="Vendido" CommandArgument='<%# DataBinder.Eval(Container, "RowIndex") %>' CommandName="Vendido"/>
                                </ItemTemplate>
                                 <HeaderStyle ForeColor="Black" HorizontalAlign="Center" VerticalAlign="Middle" />
                                <ItemStyle ForeColor="Black" HorizontalAlign="Center" VerticalAlign="Middle" />
                            </asp:TemplateField>
    
                            <asp:TemplateField>
                                <ItemTemplate>
                                    <tr style="display: none;" orderid="<%# Eval("PedidoId") %>">
                                        <td colspan="7">
                                            <div style="; left: 2%;">
                                                <asp:GridView ID="GvUsuario" runat="server" AutoGenerateColumns="False"
                                                    BackColor="White" BorderColor="#999999" BorderStyle="Solid" BorderWidth="1px"
                                                    CellPadding="4" ForeColor="#333333" GridLines="Vertical" DataKeyNames="UsuarioId" CssClass="style4">
                                                    <FooterStyle BackColor="#CCCCCC" />
                                                    <PagerStyle BackColor="#999999" ForeColor="Black" HorizontalAlign="Center" />
                                                    <SelectedRowStyle BackColor="#000099" Font-Bold="True" ForeColor="White" />
                                                    <HeaderStyle BackColor="Black" Font-Bold="True" ForeColor="White" />
                                                    <AlternatingRowStyle ForeColor="#284775" CssClass="GridView_Row_intercaldo" />
                                                    <Columns>
                                                        <asp:BoundField DataField="Nombre" HeaderText="Nombre">
                                                            <HeaderStyle ForeColor="Black" HorizontalAlign="Center" VerticalAlign="Middle" />
                                                            <ItemStyle ForeColor="Black" HorizontalAlign="Center" VerticalAlign="Middle" />
                                                        </asp:BoundField>
                                                        <asp:BoundField DataField="Apellido" HeaderText="Apellido">
                                                            <HeaderStyle ForeColor="Black" HorizontalAlign="Center" VerticalAlign="Middle" />
                                                            <ItemStyle ForeColor="Black" HorizontalAlign="Center" VerticalAlign="Middle" />
                                                        </asp:BoundField>
                                                        <asp:BoundField DataField="Telefono" HeaderText="Telefono">
                                                            <HeaderStyle ForeColor="Black" HorizontalAlign="Center" VerticalAlign="Middle" />
                                                            <ItemStyle ForeColor="Black" HorizontalAlign="Center" VerticalAlign="Middle" />
                                                        </asp:BoundField>
                                                        <asp:BoundField DataField="Email" HeaderText="Email">
                                                            <HeaderStyle ForeColor="Black" HorizontalAlign="Center" VerticalAlign="Middle" />
                                                            <ItemStyle ForeColor="Black" HorizontalAlign="Center" VerticalAlign="Middle" />
                                                        </asp:BoundField>
                                                        <asp:BoundField DataField="Direccion" HeaderText="Direccion">
                                                            <HeaderStyle ForeColor="Black" HorizontalAlign="Center" VerticalAlign="Middle" />
                                                            <ItemStyle ForeColor="Black" HorizontalAlign="Center" VerticalAlign="Middle" />
                                                        </asp:BoundField>
                                                    </Columns>
                                                </asp:GridView>
                                                <span>Clic en el número para ver detalles </span>
                                                <asp:LinkButton runat="server" ID="LkbVerDetalles" Text='<%# Eval("PedidoId") %>' OnClientClick="return opendialog(this)"></asp:LinkButton>
                                            </div>
                                            <br />
                                        </td>
                                    </tr>
                                </ItemTemplate>
                            </asp:TemplateField>                       
    
                        </Columns>
                        <HeaderStyle CssClass="GridView_Header" />
                        <PagerSettings FirstPageImageUrl="~/App_Themes/Tema/Imagenes/first.png" LastPageImageUrl="~/App_Themes/Tema/Imagenes/last.png" NextPageImageUrl="~/App_Themes/Tema/Imagenes/next.png" PreviousPageImageUrl="~/App_Themes/Tema/Imagenes/previous.png" />
                        <PagerStyle CssClass="GridView_Paginas" />
                    </asp:GridView>

    Junto con este javascript

    function subGrid(sub) {
                $('#<%=GvPedidos.ClientID %> img').ready(function () {
    
                    var img = $(this)
                    var orderid = $(this).attr('orderid');
    
                    var tr = $('#<%=GvPedidos.ClientID %> tr[orderid = ' + sub + ']')
                    tr.toggle();
    
                    if (tr.is(':visible'))
                        img.attr('src', '../../App_Themes/Tema/Imagenes/FlechaAbajo.png');
                    else
                        img.attr('src', '../../App_Themes/Tema/Imagenes/FlechaFrente.png');
    
                });
            }

    Donde estan las imagenes de flecha al frente y flecha abajo le pones el tag para generar un boton con mostrar y cerrar y listo.

    Es una fraccion de codigo de un trabajo de hay puedes basarte y ponerle lo que quieras

    miércoles, 22 de marzo de 2017 18:20
  • Hola Sebastian, gracias por tu respuesta, creo que no me hice entender bien tratare de explicarme mejor.

    En un datagridview tengo una columna con botones, esos botones al darles click muestran un panel con informacion respecto al cliente de la linea donde esta ese boton, no se trata de anidar grids ni nada, esa linea donde agrego filas a un segundo datagrid no tiene nada que ver con lo que me interesa, lo que quiero sin mas es que al dar click en un boton de una columna de botones de un datagrid yo pueda cambiarle el texto que ese boton tiene, si dice "mostrar", al dar click en el, cambiarlo por "cerrar" y viceversa, espero haberme echo entender.

    Gracias

    miércoles, 22 de marzo de 2017 19:07
  • Para quien pueda interesar:

    Las sintaxis que estaba usando y que publique en el primer comentario son corretas, la razon por la cual no me cambiaba el texto de los botones era porque tenia puesto a "true" la propiedad "UseColumnTextForButtonValue", no se en que momento la modifique, lo unico es que toca modificar mediante un bucle la propiedad value de cada boton, pero ya funciona.

    Saludos



    • Marcado como respuesta fertrones0 viernes, 24 de marzo de 2017 0:51
    viernes, 24 de marzo de 2017 0:50