none
DropDown en columnas BoundField RRS feed

  • Pregunta

  • Hola a todos

    Tengo el siguiente escenario ASP con VB

    CREATE TABLE [dbo].[A1](
    [c1] [char](3) NULL,
    [c11] [char](3) NULL,
    [c2] [datetime] NOT NULL,
    [c3] [int] NULL )

    insert into a1 values('A','A1','20170224 08:00',1)
    ,('A','A2','20170224 09:00',2)
    ,('B','B1','20170224 10:00',3)
    ,('B','B2','20170224 11:00',4)

    <!DOCTYPE html>
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
        <title>Prueba de ComboBox</title>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
            <asp:GridView ID="GridView1" runat="server" AllowSorting="True"
            AutoGenerateColumns="False" DataKeyNames="c3" DataSourceID="SqlDataSource1" PageSize="20" Height="288px" Width="1210px">
            <Columns>
                <asp:BoundField DataField="c1" HeaderText="Campo_C1" SortExpression="c1" >
                    <HeaderStyle BorderStyle="None" />
                    <ItemStyle BorderStyle="None" HorizontalAlign="Center" Width="300px" />
                </asp:BoundField>
                <asp:BoundField DataField="c11" HeaderText="Campo_C11" SortExpression="c2" >
                    <HeaderStyle BorderStyle="None" />
                    <ItemStyle BorderStyle="None" HorizontalAlign="Center" Width="200px" />
                </asp:BoundField>
                <asp:BoundField DataField="c2" HeaderText="Fecha" SortExpression="c2" >
                    <HeaderStyle BorderStyle="None" />
                    <ItemStyle BorderStyle="None" Width="200px" />
                </asp:BoundField>
                    <asp:CommandField ShowEditButton="True" />
                 </Columns>
        </asp:GridView>
            <asp:SqlDataSource
                id="SqlDataSource1"
                runat="server"
                DataSourceMode="DataSet"
                ConnectionString="<%$ ConnectionStrings:SqlDataSource1 %>"
                SelectCommand="SELECT c1,c11,c2,c3 FROM A1"
                UpdateCommand="UPDATE [A1] SET c1 = @c1,c11 = @c11 WHERE [c3] = @c3" >
            </asp:SqlDataSource>

        </div>
        </form>
    </body>
    </html>

    quiero que al editar las colunmas Campo_C1 y Campo_C11 se me transformen en un DropDown de forma tal que en Campo_C1 aparezcan los items A y B y en Campo_C11 los correspondientes. Igual es mejor que siempre sean DropDown. Debo mensionar que no los quiero enlazados a un DataSource porque los valores son 4 o 5 por cada DropDown.

    De antemano muchas gracias




    viernes, 24 de febrero de 2017 12:43

Respuestas

Todas las respuestas

  • hola

    quieres hacerlo lo mismo que explico aqui

    [ASP.NET][GridView] Edición usando DropDownList

    al poner la row en edicion en ese campo  muestra un combo

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    • Marcado como respuesta Raimundo Ferrer viernes, 24 de febrero de 2017 14:27
    viernes, 24 de febrero de 2017 13:32
  • hola

    quieres hacerlo lo mismo que explico aqui

    [ASP.NET][GridView] Edición usando DropDownList

    al poner la row en edicion en ese campo  muestra un combo

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    Muchas gracias Leandro, adaptaré mi código al tuyo a ver que tal me va. Trataré de incluir otro DropDown de forma tal que, hablando en términos de tu ejemplo, al seleccionar un país se muestre al lado otro con las posibles provincias.

    Saludos


    viernes, 24 de febrero de 2017 14:27
  • Hola a todos

    Perdonad si vuelvo a escribir sobre el tema, no me queda claro si debo abrir un nuevo tema.

    He seguido tu ejemplo Leandro, una vez mas muchas gracias, me funciona casi perfecto, pero tengo una duda: en el Grid me quedan dos DropDown de forma que si selecciono en C1 me llena el C11 con los datos correspondientes, es decir C1 = B entonces en C11 se me desplieg B1 y B2. Entonces mi pregunta es la siguiente, ¿ como puedo desde ddlC1_SelectedIndexChanged obtener el control DropDown de esa fila en concreto como se hace en GridView1_RowEditing ?. Lo he logrado creando una propiedad rowGVindex y guardando el valor del indice en una sesión y la abro en ddlC1_SelectedIndexChanged, pero si hay otra forma accediendo directamente me gustaría saber como, despues de algunos años programando VB,VBA y TSQL mis habilidades con la POO son muy limitadas. Pongo fragmentos de código que no varían mucho de tu ejemplo para que me entiendan mejor.


    Saludos


    Partial Public Class _Default
    Inherits System.Web.UI.Page
    Public rowGVindex As Integer
    ......

    Protected Sub GridView1_RowEditing(ByVal sender As Object, ByVal e As GridViewEditEventArgs)
    GridView1.EditIndex = e.NewEditIndex
    rowGVindex = e.NewEditIndex

    Session("rowindex") = rowGVindex
    ......
    End Sub

        Protected Sub ddlC1_SelectedIndexChanged(ByVal sender As Object, ByVal e As EventArgs)

            Dim ddl As DropDownList = DirectCast(sender, DropDownList)
            Dim row1 As GridViewRow = TryCast(ddl.NamingContainer, GridViewRow)
            Dim c1 As String = CType(row1.FindControl("ddlC1"), DropDownList).SelectedValue
            Dim rowGVindex As Integer = CType(Session("rowindex"), Integer)
            Dim combo As DropDownList = TryCast(GridView1.Rows(rowGVindex).FindControl("ddlC11"), DropDownList)
            If combo IsNot Nothing Then
                combo.DataSource = DataAccess.GetAllC11(c1)
                combo.DataTextField = "descripcion"
                combo.DataValueField = "descripcion"
                combo.DataBind()
            End If

        End Sub



    lunes, 27 de febrero de 2017 16:46
  • Esta excelente pero en la version express 2015 marca un error de que el doctype ya no es compatible con el <ItemTemplate>, aun no logro corregirlo
    jueves, 7 de diciembre de 2017 16:44