2017-06-13 17 views
0

Screenshot無法在datagridview的

這是數據網格視圖,其被連接到訪問數據的基礎上更新的信息。 有一列名爲「狀態」(你可以看到它在紅場)。 我想通過點擊「登記按鈕」在選定的行更新文本(到達)文本(內部)。我怎樣才能做到這一點? 在此先感謝。

private void searchbd_Click(object sender, EventArgs e) 
     { 
      if (tabControl1.SelectedTab == tabControl1.TabPages["tabPage1"]) 
      { 
       try 
       { 

        string dtparrival = this.dateTimePicker4.Text.ToString(); 
        string statusarrival = "Arrival"; 

        string strSql = "SELECT * FROM guestreg WHERE g_status = '" + statusarrival + "' AND g_ad = '" + dtparrival + "'"; 


        OleDbCommand cmd = new OleDbCommand(strSql, connection); 
        connection.Open(); 
        cmd.CommandType = CommandType.Text; 
        OleDbDataAdapter da = new OleDbDataAdapter(cmd); 
        DataTable scores = new DataTable(); 
        da.Fill(scores); 
        arrivaldgv.DataSource = scores; 
        /**************************************************************************/ 
        this.arrivaldgv.Columns[0].Visible = false; 
        this.arrivaldgv.Columns["g_totalrate"].Visible = false; 
        this.arrivaldgv.Columns["u_added"].Visible = false; 
        this.arrivaldgv.Columns["u_timeadded"].Visible = false; 
        /**************************************************************************/ 
        this.arrivaldgv.Columns["g_name"].HeaderText = "Name"; //1 
        this.arrivaldgv.Columns["g_surname"].HeaderText = "Surname"; //2 
        this.arrivaldgv.Columns["g_company"].HeaderText = "Company"; //3 
        this.arrivaldgv.Columns["g_ad"].HeaderText = "Arrival Day"; //4 
        this.arrivaldgv.Columns["g_dd"].HeaderText = "Departure Day"; //5 
        this.arrivaldgv.Columns["g_amountofdays"].HeaderText = "Amount of Days"; //6 
        this.arrivaldgv.Columns["g_na"].HeaderText = "Number of Adults"; //7 
        this.arrivaldgv.Columns["g_amountofdays"].HeaderText = "Amount of Days"; //8 
        this.arrivaldgv.Columns["g_room"].HeaderText = "Room Number"; //9 
        this.arrivaldgv.Columns["g_rate"].HeaderText = "Rate"; //10 
        this.arrivaldgv.Columns["g_totalrate"].HeaderText = "Total Rate"; //11 
        this.arrivaldgv.Columns["g_info"].HeaderText = "Information"; //12 
        this.arrivaldgv.Columns["u_added"].HeaderText = "User"; //13 
        this.arrivaldgv.Columns["u_timeadded"].HeaderText = "Time"; //14 
        this.arrivaldgv.Columns["g_status"].HeaderText = "Status"; //15 
        /**************************************************************************/ 
        connection.Close(); 
       } 
       catch 
       { 
        MessageBox.Show("Please, try again."); 
       } 
+1

讓我們看看一些代碼。你有什麼嘗試?你的數據模型/類是什麼樣的? – Kyle

+0

@凱爾,我已經更新了這個問題,並添加了「搜索」按鈕的代碼 –

+0

哪一部分導致您的問題?點擊「簽入」按鈕?獲取選定的行?更新文本?或者將值保存回您的Access數據庫? – stuartd

回答

1

我想,你只想更新dataGridView單元格中的值,而不是數據庫表中的值。

最簡單的方法是:

private void CheckInButton_Click(object sender, EventArgs e) 
    { 
     int row = dataGridView1.CurrentCell.RowIndex; 
     int col = dataGridView1.CurrentCell.ColumnIndex; 

     dataGridView1[col, row].Value = "In House"; 
    } 

您可以添加,當然一些驗證。例如:檢查是否有任何單元格被選中。

+0

Hello Jakub Nowacki,不,我想在數據庫中更改它 –

+0

所以我認爲,您可以嘗試使用SqlCommandBuilder,它應該爲您生成更新命令。 看看這裏的一些說明: http://csharp.net-informations.com/dataadapter/commandbuilder-sqlserver.htm –

+0

謝謝!將在一小時內檢查並告訴你結果。 –