none
Datagridview RRS feed

  • Pregunta

  • buen dia a todos

    mi pregunta es como puedo hacer en visual studio, trabajando en un datagridview, en columna 1 introduzca un rango numerico y que al momento de seleccionar en la columna 2 aparezca un valor 

    algo asi

    col1     col2

    1-10   si es 1 que ponga automatico "N/A", si es dos el valor de col1 que en col2 aparezca "Asis", si el valor de col1 es 3 que en col2 ponga auotmatico "Baja"

    y asi sucesivamente

    saludos 


    Hector Sosa

    martes, 3 de mayo de 2016 14:16

Respuestas

  • si es visual basic, pero ya ve que le cambiaron el nombre al programa por visual studio y de ahi dentro uno selecciona el lenguaje, vb, c#, java, etc

    lo de coreano solo es un plus, ya solucione el problema

    lo logre creando un celda en combobox y de ahi al seleccionar me aparece en automatico en las otras celdas el valor dependiendo del valor seleccionado

    mas o menos quedo asi

     Private Sub DataGridView1_SelectionChanged(sender As Object, e As EventArgs) Handles DataGridView1.SelectionChanged
            For Each row As DataGridViewRow In DataGridView1.Rows
                Select Case row.Cells(0).Value
                    Case "1"
                        row.Cells(1).Value = "Falta de Soldadura"
                        row.Cells(2).Value = "냉땜"
                    Case "2"
                        row.Cells(1).Value = "Corto"
                        row.Cells(2).Value = "쇼트"
                    Case "3"
                        row.Cells(1).Value = "Movido"
                        row.Cells(2).Value = "틀어짐"
                End Select

             Next


    Hector Sosa

    • Marcado como respuesta Hector Sosa martes, 3 de mayo de 2016 18:13
    martes, 3 de mayo de 2016 18:13

Todas las respuestas

  • Sencillo, creo yo.  Simplemente implemente una clase con INotifyPropertyChanged que tenga 2 propiedades, una para cada columna.  Luego al cambiar el valor de 1 propiedad automáticamente cambia la segunda propiedad.

        //Esta es la clase que representa una fila en el DGV.
        public class DependentProperty : INotifyPropertyChanged
        {
            #region INotifyPropertyChanged
            public event PropertyChangedEventHandler PropertyChanged;
            protected void RaisePropertyChanged([CallerMemberName]string propertyName = null)
            {
                PropertyChangedEventHandler ev = PropertyChanged;
                if (ev != null)
                {
                    ev(this, new PropertyChangedEventArgs(propertyName));
                }
                if (propertyName == "Col1")
                {
                    ChangeCol2();
                }
            }
            #endregion
    
            #region Properties
            private int _col1;
            public int Col1
            {
                get
                {
                    return _col1;
                }
                set
                {
                    if (_col1 != value)
                    {
                        _col1 = value;
                        RaisePropertyChanged();
                    }
                }
            }
            public string Col2 { get; private set; }
            #endregion
    
            #region Methods
            private void ChangeCol2()
            {
                string curCol2Val = Col2;
                switch (Col1)
                {
                    case 1:
                        Col2 = "N/A";
                        break;
                    case 2:
                        Col2 = "Asis";
                        break;
                    case 3:
                        Col2 = "Baja";
                        break;
                }
                if (curCol2Val != Col2) RaisePropertyChanged("Col2");
            }
            #endregion
    

    Y yo en un pequeño proyecto de prueba la probé así:

            private void Form1_Load(object sender, EventArgs e)
            {
                BindingList<DependentProperty> _lista = new BindingList<DependentProperty>();
                _lista.Add(new DependentProperty() { Col1 = 1 });
                _lista.Add(new DependentProperty() { Col1 = 4 });
                dataGridView1.DataSource = _lista;
            }
    

    La prueba satisfizo sus condiciones.


    Jose R. MCP
    Code Samples

    martes, 3 de mayo de 2016 14:33
  • muy buen codigo pero en que lenguaje es

    yo ocupo en visual studio

    he generado este codigo

            For Each row As DataGridViewRow In DataGridView1.Rows
                Select Case row.Cells(0).Value
                    Case "1"
                        row.Cells(1).Value = "Falta de Soldadura"
                        row.Cells(2).Value = "냉땜"
                    Case "2"
                        row.Cells(1).Value = "Corto"
                        row.Cells(2).Value = "쇼트"
                    Case "3"
                        row.Cells(1).Value = "Movido"
                        row.Cells(2).Value = "틀어짐"

               End select

             Next

    lo que no puedo hacer es en que funcion puedo activar este codigo, ya intente en 

    Private Sub DataGridView1_CellValueChanged, cellclick, cellenter, y no se genera lo operacion

    saludos 


    Hector Sosa

    martes, 3 de mayo de 2016 16:08
  • El código que le proporcioné es suficiente para producir el cambio automático.  No necesita de nada más.

    No existe un lenguaje llamado "visual studio".  Lo que usted parece conocer un poco es Visual Basic.NET.  Ese es el nombre del lenguaje.  El lenguaje más popular, sin embargo, es C#, que es el que usé para codificar lo que le mostré.

    Hay traductores en línea que le pueden ayudar a traducir.  Sin embargo, para aprender vocabulario coreano yo uso memrise.com.  No hay nada mejor que eso. :-)

    안녕하세요.  제 이름은 호세예요. 저는 단어 4000개 정도 알아지만, 많은 연습을 필요해요. :-)


    Jose R. MCP
    Code Samples

    martes, 3 de mayo de 2016 17:07
  • si es visual basic, pero ya ve que le cambiaron el nombre al programa por visual studio y de ahi dentro uno selecciona el lenguaje, vb, c#, java, etc

    lo de coreano solo es un plus, ya solucione el problema

    lo logre creando un celda en combobox y de ahi al seleccionar me aparece en automatico en las otras celdas el valor dependiendo del valor seleccionado

    mas o menos quedo asi

     Private Sub DataGridView1_SelectionChanged(sender As Object, e As EventArgs) Handles DataGridView1.SelectionChanged
            For Each row As DataGridViewRow In DataGridView1.Rows
                Select Case row.Cells(0).Value
                    Case "1"
                        row.Cells(1).Value = "Falta de Soldadura"
                        row.Cells(2).Value = "냉땜"
                    Case "2"
                        row.Cells(1).Value = "Corto"
                        row.Cells(2).Value = "쇼트"
                    Case "3"
                        row.Cells(1).Value = "Movido"
                        row.Cells(2).Value = "틀어짐"
                End Select

             Next


    Hector Sosa

    • Marcado como respuesta Hector Sosa martes, 3 de mayo de 2016 18:13
    martes, 3 de mayo de 2016 18:13