2012-12-18 3 views
0

아래 프로그램을 데이터베이스에서 두 개의 소수점 이하 자릿수로 반올림하여 데이터 목록에 표시하는 프로그램으로 변경하려고합니다. 현재 사용중인 프로그램은 무한히 상하로 스크롤되지만 수치는 즉시 잊혀지기 때문에 피부가 심하다. 내 프로그램이 스크롤 가능한 테이블에있는 데이터베이스의 모든 숫자를 표시 할 수있게하고 DataGrid에서이를 기억하도록합니다.Datagrid 데이터베이스에서 두 번 표시 (Windows 양식)

데이터베이스에 대한 경험이 전혀없는 것은 문제입니다. 나는 그 (것)들에 연락하는 방법, 그 (것)들을 수입하는 방법, 또는 그런 무엇이든을 모른다. 누군가 내가이 일을 시작하도록 도울 수 있습니까? 데이터베이스에 대한 액세스 권한이 적어도 필요합니다. 내 자신의 형식을 지정하는 방법을 알아낼 수는 있습니다.

나에게 중요한 질문 : 온라인에서 데이터베이스에 액세스 할 수 있습니까? 아니면 데이터베이스를 로컬로 다운로드하고 액세스 할 수 있습니까?

감사

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Xml.Serialization; 
using System.IO; 
using System.Linq; 
using System.Text; 
using System.Windows.Forms; 

namespace SterlingDataGrid 
{ 

public partial class Form1 : System.Windows.Forms.Form 
{ 

    // private SterlingLib.STIQuote stiQuote = new SterlingLib.STIQuote(); 
    //private SterlingLib.STIApp stiApp = new SterlingLib.STIApp(); 
    //private List<string> listMsg = new List<string>(); 
    // private bool bModeXML = true; 

    private Panel buttonPanel = new Panel(); 
    private Panel buttonPanel2 = new Panel(); 

    private DataGridView sterlingDataGridView = new DataGridView(); 
    private Button upButton = new Button(); 
    private Button downButton = new Button(); 
    private TextBox quoteBox = new TextBox(); 

    public static double num1 = 1203.5; 


    public Form1() 
    { 
     this.Load += new EventHandler(Form1_Load); 

    } 

    private void Form1_Load(System.Object sender, System.EventArgs e) 
    { 
     SetupLayout(); 
     SetupDataGridView(); 
     PopulateDataGridView(); 
    } 

    private void upButton_Click(object sender, EventArgs e) 
    { 
     num1 += .1; 
     sterlingDataGridView.Rows[1].Cells[2].Value = num1; 
     for (int r = 2; r < 10; r++) 
     { 
      sterlingDataGridView.Rows[r].Cells[2].Value = (double)(sterlingDataGridView.Rows[r - 1].Cells[2].Value) - 0.1; 
     } 
    } 

    private void downButton_Click(object sender, EventArgs e) 
    { 
     num1 -= .1; 
     sterlingDataGridView.Rows[1].Cells[2].Value = num1; 
     for (int r = 2; r < 10; r++) 
     { 
      sterlingDataGridView.Rows[r].Cells[2].Value = (double)(sterlingDataGridView.Rows[r - 1].Cells[2].Value) - 0.1; 
     } 
    } 

    //***NEW*** 
    private void sterlingDataGridView_MouseDown(object sender, MouseEventArgs e) 
    { 
     if (e.Button == MouseButtons.Left) 
     { 
      DataGridView.HitTestInfo hit = sterlingDataGridView.HitTest(e.X, e.Y); 
      if (hit.Type == DataGridViewHitTestType.Cell) 
      { 

       //clickedCell = sterlingDataGridView.Rows[hit.RowIndex].Cells[hit.ColumnIndex]; 
       if(hit.ColumnX == 0) 

       MessageBox.Show("TEST COMPLETE. ROW INDEX: " + hit.RowIndex + " COLUMN INDEX: " + hit.ColumnIndex); 
      } 
     } 
    } 

    private void SetupLayout() 
    { 
     this.Size = new Size(600, 500); 

     sterlingDataGridView.AutoSize = true; 

     upButton.Text = "^"; 
     upButton.Location = new Point(10, 10); 
     upButton.Click += new EventHandler(upButton_Click); 


     downButton.Text = "v"; 
     downButton.Location = new Point(100, 10); 
     downButton.Click += new EventHandler(downButton_Click); 

     sterlingDataGridView.MouseDown += new MouseEventHandler(sterlingDataGridView_MouseDown); 


     buttonPanel.Controls.Add(upButton); 
     buttonPanel.Controls.Add(downButton); 
     buttonPanel.Controls.Add(quoteBox); 

     quoteBox.Location = new Point(100, 0 + (upButton.Height*2)); 
     downButton.Location = new Point(110, 0 + upButton.Height); 
     upButton.Location = new Point(110, 0); 

     buttonPanel.Height = 197; 
     buttonPanel.Dock = DockStyle.Bottom; 

     buttonPanel2.Width = 231; 
     buttonPanel2.Dock = DockStyle.Right; 

    // buttonPanel.Controls. 
     this.Controls.Add(this.buttonPanel); 
     this.Controls.Add(this.buttonPanel2); 
    } 

    private void SetupDataGridView() 
    { 
     this.Controls.Add(sterlingDataGridView); 

     sterlingDataGridView.ColumnCount = 6; 

     sterlingDataGridView.ColumnHeadersDefaultCellStyle.BackColor = Color.Navy; 
     sterlingDataGridView.ColumnHeadersDefaultCellStyle.ForeColor = Color.White; 
     sterlingDataGridView.ColumnHeadersDefaultCellStyle.Font = 
      new Font(sterlingDataGridView.Font, FontStyle.Bold); 

     sterlingDataGridView.Name = "sterlingDataGridView"; 
     sterlingDataGridView.Location = new Point(8, 8); 
     sterlingDataGridView.Size = new Size(500, 250); 
     sterlingDataGridView.AutoSizeRowsMode = 
      DataGridViewAutoSizeRowsMode.DisplayedCellsExceptHeaders; 
     sterlingDataGridView.ColumnHeadersBorderStyle = 
      DataGridViewHeaderBorderStyle.Single; 
     sterlingDataGridView.CellBorderStyle = DataGridViewCellBorderStyle.Single; 
     sterlingDataGridView.GridColor = Color.Black; 
     sterlingDataGridView.RowHeadersVisible = false; 
     sterlingDataGridView.ReadOnly = true; //***NEW*** 


     sterlingDataGridView.Columns[0].Width = sterlingDataGridView.Columns[2].Width/2; 
     sterlingDataGridView.Columns[1].Width = sterlingDataGridView.Columns[2].Width/2; 
     sterlingDataGridView.Columns[3].Width = sterlingDataGridView.Columns[2].Width/2; 
     sterlingDataGridView.Columns[4].Width = sterlingDataGridView.Columns[2].Width/2; 
     sterlingDataGridView.Columns[5].Width = sterlingDataGridView.Columns[2].Width/2; 

     sterlingDataGridView.Columns[0].Name = "Bid"; 
     sterlingDataGridView.Columns[1].Name = "BidQty"; 
     sterlingDataGridView.Columns[2].Name = ""; 
     sterlingDataGridView.Columns[3].Name = "AskQty"; 
     sterlingDataGridView.Columns[4].Name = "Ask"; 
     sterlingDataGridView.Columns[5].Name = "Vol"; 

     sterlingDataGridView.SelectionMode = 
      DataGridViewSelectionMode.FullRowSelect; 
     sterlingDataGridView.MultiSelect = false; 
     sterlingDataGridView.Dock = DockStyle.Fill; 


    } 

    void PopulateDataGridView() 
    { 

     double num2 = num1 - .1; 
     double num3 = num2 - .1; 
     double num4 = num3 - .1; 
     double num5 = num4 - .1; 
     double num6 = num5 - .1; 
     double num7 = num6 - .1; 
     double num8 = num7 - .1; 
     double num9 = num8 - .1; 
     string[] row0 = { "", "", "  ^", "", "", "" }; 
     string[] row1 = { "", "", System.Convert.ToString(num1), "", "", "" }; 
     string[] row2 = { "", "", System.Convert.ToString(num2), "", "", "" }; 
     string[] row3 = { "", "", System.Convert.ToString(num3), "", "", "" }; 
     string[] row4 = { "", "", System.Convert.ToString(num4), "", "", "" }; 
     string[] row5 = { "", "", System.Convert.ToString(num5), "", "", "" }; 
     string[] row6 = { "", "", System.Convert.ToString(num6), "", "", "" }; 
     string[] row7 = { "", "", System.Convert.ToString(num7), "", "", "" }; 
     string[] row8 = { "", "", System.Convert.ToString(num8), "", "", "" }; 
     string[] row9 = { "", "", System.Convert.ToString(num9), "", "", "" }; 
     string[] row10 = { "", "", "  v", "", "", "" }; 


     sterlingDataGridView.Rows.Add(row0); 
     sterlingDataGridView.Rows.Add(row1); 
     sterlingDataGridView.Rows.Add(row2); 
     sterlingDataGridView.Rows.Add(row3); 
     sterlingDataGridView.Rows.Add(row4); 
     sterlingDataGridView.Rows.Add(row5); 
     sterlingDataGridView.Rows.Add(row6); 
     sterlingDataGridView.Rows.Add(row7); 
     sterlingDataGridView.Rows.Add(row8); 
     sterlingDataGridView.Rows.Add(row9); 
     sterlingDataGridView.Rows.Add(row10); 



     sterlingDataGridView.Columns[0].DisplayIndex = 0; 
     sterlingDataGridView.Columns[1].DisplayIndex = 1; 
     sterlingDataGridView.Columns[2].DisplayIndex = 2; 
     sterlingDataGridView.Columns[3].DisplayIndex = 3; 
     sterlingDataGridView.Columns[4].DisplayIndex = 4; 
    } 




}  
} 

답변

0

내가 LINQ를 통해 SQL에 좋은 시작을위한 링크를 추천 할 것입니다 :

fastest-start-for-linq-to-sql

using-linq-to-sql-tutorials

행운을 빕니다!

다운로드 및 실행해야하는 응용 프로그램이 있으므로 XML 또는 TEXT 파일을 응용 프로그램 옆에 간단한 파일로 설치할 수 있으며 설치가 필요하지 않은 로컬 데이터베이스로 사용하는 것이 좋습니다. 작업 XML에 대한 좋은 시작 : 당신은 또한 XML에 LINQ에 대한 몇 가지 유용한 기사를 시작 또는 자습서 + "XML에 LINQ"을 검색 할 수 있습니다

LINQ to XML Tutorial

.

+0

마지막 질문에 대한 데이터베이스는 대개 "서버"입니다. 즉, 필요에 따라 보관 및 검색해야하는 데이터에 대해 서비스를 제공하므로 온라인 데이터베이스를 보유할지 아니면 로컬 데이터베이스를 보유 할지를 결정할 수 있습니다. 간단한 XML 또는 TEXT 파일 일 수도 있습니다. –

+0

자, 이상적으로, 완성 된 프로그램은 사용자가 다운로드하여 독자적으로 실행할 수있는 것입니다. 데이터베이스를 다운로드하고 설정하도록해야합니까? 그게 날 위해 딜 브레이커 일거야. 그렇다면 정말 큰 배열이나 이진 탐색 트리를 만들 수 있습니다 (C#으로 작업하는 방법을 이해할 수 있다면). – jdewitte

+0

나는 내 대답을 편집했다. 382heresy –