elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Recuerda que debes registrarte en el foro para poder participar (preguntar y responder)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  DUDA ASP.NET C#
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: DUDA ASP.NET C#  (Leído 2,693 veces)
Yaldabaot

Desconectado Desconectado

Mensajes: 186


Ver Perfil
DUDA ASP.NET C#
« en: 12 Noviembre 2014, 06:11 am »

Buenas

Estoy tratando de hacer algo muy simple, es solo agregar al datagridview un registro conforme voy dandole los datos y posteriormente multiplicar y sumar las facturas, tal como se hace cuando uno realiza un facturador.

Código
  1.  
  2.  
  3.            //DataTable dt = new DataTable();
  4.            //dt.Columns.Add("Codigo_Articulo");
  5.            //dt.Columns.Add("Descripcion");
  6.            //dt.Columns.Add("Cantidad");
  7.            //dt.Columns.Add("Precio");
  8.  
  9.            DataTable dt = dgvCostos.DataSource as DataTable;
  10.  
  11.            if (dt != null)
  12.            {
  13.  
  14.                DataRow dr = dt.NewRow();
  15.                dr["Codigo_Articulo"] = txtCodArt.Text;
  16.                dr["Descripcion"] = txtDescripcion.Text;
  17.                dr["Cantidad"] = txtCantidad.Text;
  18.                dr["Precio"] = txtPrecio.Text;
  19.                dt.Rows.Add(dr);
  20.                dt.AcceptChanges();
  21.  
  22.                dgvCostos.DataSource = dt;
  23.                dgvCostos.DataBind();
  24.            }
  25.  

Estoy con ese codigo, pero simplemente no hace nada, como pueden ver lo he alternado, pero simplemente el datagridview sigue viendose vacio.

En el datagridview tengo realizado las columnas respectivas(ya estan creadas), pero bueno sigo sin entender el porque no se agregan con un codigo tan simple.

Y de paso, saben como puedo hacer que conforme se agregue se multipliquen la columna precio * cantidad?, y al final sumarlos todos como en una factura?. Estuve pensando que usando alguno de los parametros e que capturan los eventos se puede realizar, pero talvez haya una forma mas simple.

Estoy trabajando con visual studio 2010, ASP.NET C#.

De antemano gracias al menos por leerme.


En línea

Nunca me contestan -_-
Yaldabaot

Desconectado Desconectado

Mensajes: 186


Ver Perfil
Re: DUDA ASP.NET C#
« Respuesta #1 en: 12 Noviembre 2014, 16:57 pm »

Talvez no me dí a entender bien, disculpen.

Tengo 4 cajas de texto(textbox) las cuales escribiré ahí los datos. La idea es hacer como una especie de líneas de facturas, como cuando vas a un punto de ventas y se agregan los artículos línea a línea a un datagridview.

Lo que quiero es simplemente agarrar lo que escribes en esos campos y transferirlo en forma de registro(como si hubieras hecho un insert) al datagridview.

También quiero que si ya hay datos pues no los sobrescriba, sino que simplemente agregue otra línea más.

Ya he utilizado estos enlaces:

http://neobject.blogspot.com/2010/04/agregar-registros-un-gridview.html

http://www.webestilo.com/foros/mensaje.phtml?foro=14&msg=40519
http://www.codeproject.com/Articles/10982/Adding-a-row-to-an-ASP-NET-DataGrid

http://msdn.microsoft.com/en-us/library/system.windows.forms.datagridview.rows%28v=vs.110%29.aspx

http://www.aspsnippets.com/Articles/Add-new-Row-to-GridView-on-Button-Click-in-ASPNet.aspx


Pero sólo me inserta espacios en blanco, habrá alguna propiedad que no esté utilizando???.
No se donde va este tema pero sino pueden pasarlo, mis disculpas.
Saludos!.


« Última modificación: 12 Noviembre 2014, 18:39 pm por Yaldabaot » En línea

Nunca me contestan -_-
Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.709



Ver Perfil
Re: DUDA ASP.NET C#
« Respuesta #2 en: 12 Noviembre 2014, 20:00 pm »

Buenas.

No manejo ASP.Net, ni tampoco tengo muy claro si esto es lo que andas buscando, pero he intentado reproducir el problema que tienes en tecnología WinForms.

Mira a ver si el siguiente source te resuelve todas o al menos alguna de tus dudas...
Para las operaciones artiméticas he recurrido a LINQ ya que se puede utilizar de forma "global".




Descarga del proyecto:
https://www.mediafire.com/?y1yifofj0s8i6r8


VB.Net:
Código
  1. Public Class Form1
  2.  
  3.    Private WithEvents dt As DataTable
  4.  
  5.    Private ReadOnly columns As DataColumn() =
  6.        {
  7.            New DataColumn("Codigo_Articulo", GetType(String)),
  8.            New DataColumn("Descripcion", GetType(String)),
  9.            New DataColumn("Cantidad", GetType(Integer)),
  10.            New DataColumn("Precio", GetType(Decimal))
  11.        }
  12.  
  13.    ' añadir fila
  14.    Private Sub Button_añadir_Click() Handles Button_añadir.Click
  15.  
  16.        If dt Is Nothing Then
  17.            dt = New DataTable
  18.            dt.Columns.AddRange(columns)
  19.            dgvCostos.DataSource = dt
  20.            ' dgvCostos.DataBind()
  21.        End If
  22.  
  23.        Dim dr As DataRow = dt.NewRow()
  24.        dr(columns(0)) = txtCodArt.Text
  25.        dr(columns(1)) = txtDescripcion.Text
  26.        dr(columns(2)) = txtCantidad.Text
  27.        dr(columns(3)) = txtPrecio.Text
  28.        dt.Rows.Add(dr)
  29.        dt.AcceptChanges()
  30.  
  31.    End Sub
  32.  
  33.    ' Sumar y Multiplicar
  34.    Private Sub Button_sumar_Click(sender As Object, e As EventArgs) Handles Button_sumar.Click
  35.  
  36.        ' total de cantidades
  37.        Dim sumaCantidades As Integer = (From row As DataRow In dt.Rows
  38.                                         Select CType(row.Item(2I), Integer)).Sum
  39.  
  40.        ' total de precios
  41.        Dim sumaPrecios As Integer = (From row As DataRow In dt.Rows
  42.                                      Select CType(row.Item(3I), Integer)).Sum
  43.  
  44.        ' un type anónimo, el cual contiene cada DataRow, y cada "cantidad * precio" de cada DataRow.
  45.        Dim multi = From row As DataRow In dt.Rows
  46.                    Let multiply As Integer = CType(row.Item(2I), Integer) * CType(row.Item(3I), Integer)
  47.  
  48.        Dim sb As New System.Text.StringBuilder
  49.        sb.AppendLine(String.Format("Cantidad total: {0}", CStr(sumaCantidades)))
  50.        sb.AppendLine(String.Format("Precio total: {0}", CStr(sumaPrecios)))
  51.        sb.AppendLine()
  52.  
  53.        For index As Integer = 0 To (multi.Count - 1)
  54.  
  55.            sb.AppendLine(String.Format("Row: {0}, Cantidad: {1}, Precio: {2}, Precio total: {3}",
  56.                                        CStr(index),
  57.                                        CStr(multi(index).row.Item(2I)),
  58.                                        CStr(multi(index).row.Item(3I)),
  59.                                        CStr(multi(index).multiply)))
  60.  
  61.        Next index
  62.  
  63.        MessageBox.Show(sb.ToString)
  64.  
  65.    End Sub
  66.  
  67. End Class

C# (traducción online)
Código
  1. using Microsoft.VisualBasic;
  2. using System;
  3. using System.Collections;
  4. using System.Collections.Generic;
  5. using System.Data;
  6. using System.Diagnostics;
  7. public class Form1
  8. {
  9.  
  10.  
  11. private DataTable dt;
  12. private readonly DataColumn[] columns = {
  13. new DataColumn("Codigo_Articulo", typeof(string)),
  14. new DataColumn("Descripcion", typeof(string)),
  15. new DataColumn("Cantidad", typeof(int)),
  16. new DataColumn("Precio", typeof(decimal))
  17.  
  18. };
  19. // añadir fila
  20.  
  21. private void Button_añadir_Click()
  22. {
  23. this.dt = (DataTable)dgvCostos.DataSource;
  24.  
  25. if (dt == null) {
  26. dt = new DataTable();
  27. dt.Columns.AddRange(columns);
  28. dgvCostos.DataSource = dt;
  29. // dgvCostos.DataBind()
  30. }
  31.  
  32. DataRow dr = dt.NewRow();
  33. dr(columns(0)) = txtCodArt.Text;
  34. dr(columns(1)) = txtDescripcion.Text;
  35. dr(columns(2)) = txtCantidad.Text;
  36. dr(columns(3)) = txtPrecio.Text;
  37. dt.Rows.Add(dr);
  38. dt.AcceptChanges();
  39.  
  40. }
  41.  
  42. // Sumar y Multiplicar
  43.  
  44. private void Button_sumar_Click(object sender, EventArgs e)
  45. {
  46. // total de cantidades
  47. int sumaCantidades = (from row in dt.RowsConvert.ToInt32(row.Item(2))).Sum;
  48.  
  49. // total de precios
  50. int sumaPrecios = (from row in dt.RowsConvert.ToInt32(row.Item(3))).Sum;
  51.  
  52. // un type anónimo, el cual contiene cada DataRow, y cada "cantidad * precio" de cada DataRow.
  53. dynamic multi = from row in dt.RowsConvert.ToInt32(row.Item(2)) * Convert.ToInt32(row.Item(3))int;
  54.  
  55. System.Text.StringBuilder sb = new System.Text.StringBuilder();
  56. sb.AppendLine(string.Format("Cantidad total: {0}", Convert.ToString(sumaCantidades)));
  57. sb.AppendLine(string.Format("Precio total: {0}", Convert.ToString(sumaPrecios)));
  58. sb.AppendLine();
  59.  
  60.  
  61. for (int index = 0; index <= (multi.Count - 1); index++) {
  62. sb.AppendLine(string.Format("Row: {0}, Cantidad: {1}, Precio: {2}, Precio total: {3}", Convert.ToString(index), Convert.ToString(multi(index).row.Item(2)), Convert.ToString(multi(index).row.Item(3)), Convert.ToString(multi(index).multiply)));
  63.  
  64. }
  65.  
  66. MessageBox.Show(sb.ToString);
  67.  
  68. }
  69.  
  70. }
  71.  
  72. //=======================================================
  73. //Service provided by Telerik (www.telerik.com)
  74. //Conversion powered by NRefactory.
  75. //Twitter: @telerik
  76. //Facebook: facebook.com/telerik
  77. //=======================================================
  78.  
« Última modificación: 12 Noviembre 2014, 20:08 pm por Eleкtro » En línea


Yaldabaot

Desconectado Desconectado

Mensajes: 186


Ver Perfil
Re: DUDA ASP.NET C#
« Respuesta #3 en: 12 Noviembre 2014, 20:49 pm »

Gracias elektro!!!, lo probaré y te cuento como me fue!!!

SALUDOS!!.
En línea

Nunca me contestan -_-
Yaldabaot

Desconectado Desconectado

Mensajes: 186


Ver Perfil
Re: DUDA ASP.NET C#
« Respuesta #4 en: 13 Noviembre 2014, 02:43 am »

Lamento decirlo, pero sigo sin poder agregarlos, el datagrid sigue en blanco, será algún postback o alguna propiedad(le cambie los parentesis por cuadrados porque me daba error, pero lo demás estaba idéntico).

Código
  1.  
  2. //Codigo del botón
  3. this.dt = (DataTable)dgvCostos.DataSource;
  4.  
  5.            if (dt == null)
  6.            {
  7.                dt = new DataTable();
  8.                dt.Columns.AddRange(columns);
  9.                dgvCostos.DataSource = dt;
  10.                dgvCostos.DataBind();
  11.            }
  12.  
  13. /
  14.  
  15.            DataRow dr = dt.NewRow();
  16.              dr["Codigo_Articulo"] = txtCodArt.Text;
  17.              dr["Descripcion"] = txtDescripcion.Text;
  18.              dr["Cantidad"] = txtCantidad.Text;
  19.              dr["Precio"] = txtPrecio.Text;
  20.            dt.Rows.Add(dr);
  21.            dt.AcceptChanges();
  22.  
  23.  
  24.            }
  25.  
  26.  
  27.  
  28. //Codigo del datatable    
  29. private DataTable dt;
  30.        private readonly DataColumn[] columns = {
  31. new DataColumn("Codigo_Articulo", typeof(string)),
  32. new DataColumn("Descripcion", typeof(string)),
  33. new DataColumn("Cantidad", typeof(int)),
  34. new DataColumn("Precio", typeof(double))
  35.  
  36.    };
  37.  
  38.  
En línea

Nunca me contestan -_-
Yaldabaot

Desconectado Desconectado

Mensajes: 186


Ver Perfil
Re: DUDA ASP.NET C#
« Respuesta #5 en: 13 Noviembre 2014, 03:26 am »

Estoy usando este otro código y el gridview ni se inmuta D:

Código
  1.  
  2.  DataTable dt;
  3.  
  4.  
  5. protected void Page_Load(object sender, EventArgs e)
  6.        {
  7.  
  8.            if (!Page.IsPostBack)
  9.            {
  10.                dt = new DataTable();
  11.                MakeDataTable();
  12.            }
  13.            else
  14.            {
  15.                dt = (DataTable)ViewState["DataTable"];
  16.            }
  17.            ViewState["DataTable"] = dt;
  18.        }
  19.  
  20. protected void btnAgregar_Click(object sender, EventArgs e)
  21.        {
  22.  
  23.            AddToDataTable();
  24.            BindGrid();
  25.  
  26.  
  27.        }
  28.  
  29.  private void MakeDataTable()
  30.        {
  31.            dt.Columns.Add("Codigo_Articulo");
  32.            dt.Columns.Add("Descripcion");
  33.            dt.Columns.Add("Cantidad");
  34.            dt.Columns.Add("Precio");
  35.        }
  36.  
  37.        private void AddToDataTable()
  38.        {
  39.            DataRow dr = dt.NewRow();
  40.              dr["Codigo_Articulo"] = txtCodArt.Text;
  41.              dr["Descripcion"] = txtDescripcion.Text;
  42.              dr["Cantidad"] = txtCantidad.Text;
  43.              dr["Precio"] = txtPrecio.Text;
  44.              dt.Rows.Add(dr);
  45.        }
  46.  
  47.        private void BindGrid()
  48.        {
  49.            dgvCostos.DataSource = dt;
  50.            dgvCostos.DataBind();
  51.        }
  52.  
  53.  
  54.  
  55.  
  56.  
  57.  
En línea

Nunca me contestan -_-
Yaldabaot

Desconectado Desconectado

Mensajes: 186


Ver Perfil
Re: DUDA ASP.NET C#
« Respuesta #6 en: 13 Noviembre 2014, 23:37 pm »

Nadie sabe?

Ayuda alguien u.u?, no entiendo porque no he podido.
« Última modificación: 15 Noviembre 2014, 22:00 pm por Yaldabaot » En línea

Nunca me contestan -_-
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Pequeña duda con un comando batch (NUEVA DUDA RELACIONADA)
Scripting
revenge1252 9 7,848 Último mensaje 13 Febrero 2008, 21:41 pm
por revenge1252
Duda duda y duda de Metasploit
Bugs y Exploits
huber_nomas 4 4,067 Último mensaje 17 Febrero 2012, 14:00 pm
por MauroMasciar
Duda facil, [VIDEO QUE EXPLICA MI DUDA]
Diseño Gráfico
Ngeooz 6 6,911 Último mensaje 2 Diciembre 2013, 19:33 pm
por Ngeooz
[DUDA] Cambiar letra de unidad a archivo con un Batch [DUDA] « 1 2 »
Windows
MrMaticool 10 7,693 Último mensaje 12 Febrero 2014, 17:55 pm
por MrMaticool
MOVIDO: [DUDA] Cambiar letra de unidad a archivo con un Batch [DUDA]
Scripting
Eleкtro 0 1,580 Último mensaje 8 Febrero 2014, 17:07 pm
por Eleкtro
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines