Skip to content

Instantly share code, notes, and snippets.

@lokcito
Created August 6, 2020 18:33
Show Gist options
  • Save lokcito/ef19ebbdc89c8d284753d4efe930ef18 to your computer and use it in GitHub Desktop.
Save lokcito/ef19ebbdc89c8d284753d4efe930ef18 to your computer and use it in GitHub Desktop.
C# Datagrid Command Line

#How to compile

C:\Windows\Microsoft.NET\Framework64\v4.0.30319\csc.exe -reference:Newtonsoft.Json.dll /target:winexe .\Table.cs

C:\Windows\Microsoft.NET\Framework64\v4.0.30319\csc.exe -r:Newtonsoft.Json.dll /target:winexe .\Table.cs

using System;
using System.IO;
using System.Collections.Generic;
using System.Net;
using System.Text;
using System.Diagnostics;
using System.Linq;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System.Drawing;
using System.Windows.Forms;
public class Program : Form
{
//Esta funcion se escribe sola en Visual Studio
//Declaro elementos visuales
private DataGridView productGrid = new DataGridView();
private Button btnLoad = new Button();
private Panel buttonPanel = new Panel();
public Program()
{
//Esta funcion se escribe sola en Visual Studio
//Definir evento que dispare cuando la ventana ha iniciado
this.Load += new EventHandler(Program_Load);
}
private void Program_Load(System.Object sender, System.EventArgs e)
{
//Esta funcion se escribe sola en Visual Studio
//Agrego boton y su panel correspondiente
SetupLayout();
DrawTable();
}
private void SetupLayout() {
//Esta funcion se escribe sola en Visual Studio
//Definimos size de la ventana
this.Size = new Size(600, 500);
//Seteamos el texto del boton
btnLoad.Text = "Cargar datos";
//Ubicamos al boton en la ventana
btnLoad.Location = new Point(10, 10);
//Adding un evento on click
btnLoad.Click += new EventHandler(btnLoad_Click);
buttonPanel.Controls.Add(btnLoad);
buttonPanel.Height = 50;
buttonPanel.Dock = DockStyle.Bottom;
this.Controls.Add(this.buttonPanel);
}
private void DrawTable() {
//Esta funcion se escribe sola en Visual Studio
//Add table a la lista de controles de la ventana
this.Controls.Add(productGrid);
//Indico el numero de columnas
productGrid.ColumnCount = 2;
//Defino la posicion en la ventana
productGrid.Location = new Point(8, 8);
//Defino el size de la tabla
productGrid.Size = new Size(this.Size.Width - 30, this.Size.Height);
//Defino nombres de columnas
productGrid.Columns[0].Name = "Id";
productGrid.Columns[1].Name = "Producto";
}
private void btnLoad_Click(object sender, EventArgs e)
{
MakeRequest();
}
private void MakeRequest() {
//Esto lo escribe el programador
//Consume datos de la nube
string URL = "http://1ce90d65de33.ngrok.io/MProducto";
HttpWebRequest request = (HttpWebRequest) WebRequest.Create(URL);
request.ContentType = "application/json; charset=utf-8";
HttpWebResponse response = request.GetResponse() as HttpWebResponse;
using (Stream responseStream = response.GetResponseStream())
{
StreamReader reader = new StreamReader(responseStream, Encoding.UTF8);
JObject o = JObject.Parse(reader.ReadToEnd());
JArray jsonarray = (JArray)o["objects"];
String name;
int id;
for (int i = 0; i < jsonarray.Count; i++)
{
JObject aItem = (JObject)jsonarray[i];
id = (int)aItem["nIdProducto"];
name = (string)aItem["cNombreProducto"];
InsertRow(id, name);
}
}
}
private void InsertRow(int id, string name) {
//Esto lo escribe el programador
string[] row0 = { id + "", name};
productGrid.Rows.Add(row0);
}
public static void Main()
{
Application.Run(new Program());
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment