簡體   English   中英

從按鈕 c# VB.FORM 向 gridview 添加行

[英]Add row to gridview from a button c# VB.FORM

Good morning, I am trying to add from 1 button 1 new row to my gridview form in c # vb.net and sql server, but I can't find the function to add 1 new row to the gridview using a button

在此處輸入圖像描述

到目前為止,我只向 gridview 顯示了記錄,這是我顯示數據的代碼。

 private void txtcod_TextChanged(object sender, EventArgs e)
    {
        if (txtcod.Text == "")
        {



        }
        else {

            this.dgvcontactos.DataSource = negCli.DatosContacto(MODULOS.Globales.Base, txtcod.Text);
        
        }
    }

這是我的data_layer,我有1個調用存儲過程的function

 public DataTable Contactos_ClieProvs(String basesita, String codClie) { DataTable dt = new DataTable(); try { SqlConnection cnn = new SqlConnection(conexion.CargarBase(basesita)); SqlCommand cmd = new SqlCommand("execute CONTACTOS @tipo=13,@IdClieProv='" + codClie + "'", cnn); //cmd.CommandTimeout = 0; SqlDataAdapter da = new SqlDataAdapter(cmd); try { if (cnn.State == ConnectionState.Closed) { cnn.Open(); } else { cnn.Close(); cnn.Open(); } da.Fill(dt); } catch (SqlException ex) { throw ex; } finally { cnn.Close(); } } catch (SqlException ex1) { throw ex1; } return dt; }

通過我的數據庫中的存儲過程,來自聯系人的 select *,我正在處理 N 層,到目前為止一切都很好,我想要的是通過一個按鈕將 1 行添加到 gridview 一旦保存的行隨着保存按鈕被填滿,他們會有任何想法。

您可以在 DataTable 中添加一行,它將顯示在網格上。

但是考慮使用 BindingSource 總是好的,您可以在其中按事件設置新行的初始化。

System.Windows.Forms.BindingSource bs = new System.Windows.Forms.BindingSource();
private void txtcod_TextChanged(object sender, EventArgs e)
{
    if ("" == "") return;

    var dt = negCli.DatosContacto(MODULOS.Globales.Base, txtcod.Text);
    bs.DataSource = dt;
    bs.AddingNew +=bs_AddingNew;
    dt.RowDeleting +=dt_RowDeleting;
    this.dgvcontactos.DataSource = bs;
}

void dt_RowDeleting(object sender, DataRowChangeEventArgs e)
{
    // Delete from db
}

void bs_AddingNew(object sender, System.ComponentModel.AddingNewEventArgs e)
{
    // init new row columns with init values in e.NewObject;
}

private void btnAddNew(object sender, EventArgs e) {
    bs.AddNew();
}

private void btnSave(object sender, EventArgs e) {
    var dt = bs.DataSource as DataTable;
    foreach(DataRow r in dt.GetChanges().Rows) {
        if(r.RowState == DataRowState.Added) {
            // Save to db
        }
        if(r.RowState == DataRowState.Modified) {
            // Save changes
        }
    }
    dt.AcceptChanges();
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM