=========高手看过来,  winform中如何使用datagrid来一次添加多条纪录?想一次添加多条纪录,请问怎么实现

解决方案 »

  1.   

    winform的本来就可以一次修改多行阿
      

  2.   

    数据加到DataTable后作为DataGrid的数据源呀,要加几条都行呀
      

  3.   

    up
    先将要显示数据放入datatable或者dataset,然后作为datagrid的数据源
      

  4.   


    看你的datatable里面有多少条数据了,datagrid就相应有多少条数据。
      

  5.   

    private void btn_Souvenir_Insert_Click(object sender, System.EventArgs e)
    {
    try
    {
    ComLogOutput.WriteLogFile("btn_Souvenir_Insert_Click Begin");

    if(this.Session["dsp_TripReport_Souvenir"]==null)
    {
    BindData_pnlSouvenir();
    } DataTable dtUpt = (DataTable)Session["dsp_TripReport_Souvenir"] ;

    for(int intDs = 0; intDs < dg_Souvenir.Items.Count;intDs++)
    {
    // find datagrid object
    DropDownList curr = (DropDownList)this.dg_Souvenir.Items[intDs].FindControl("dg_Souvenir_Curr"); string TripDate = ((UC_CalendarText)this.dg_Souvenir.Items[intDs].FindControl("dg_Souvenir_txt_TripDate")).Text.Trim();
    string CustName = ((TextBox)this.dg_Souvenir.Items[intDs].FindControl("dg_Souvenir_txt_CustName")).Text.Trim();
    string Description = ((TextBox)this.dg_Souvenir.Items[intDs].FindControl("dg_Souvenir_txt_Description")).Text.Trim();
    string Qty = ((TextBox)this.dg_Souvenir.Items[intDs].FindControl("dg_Souvenir_txt_Qty")).Text.Trim();
    string Amt = ((TextBox)this.dg_Souvenir.Items[intDs].FindControl("dg_Souvenir_txt_Amt")).Text.Trim();
    string LocalAmt = ((TextBox)this.dg_Souvenir.Items[intDs].FindControl("dg_Souvenir_txt_LocalAmt")).Text.Trim();
    string Receipt = ((TextBox)this.dg_Souvenir.Items[intDs].FindControl("dg_Souvenir_txt_Receipt")).Text.Trim();

    dtUpt.Rows[intDs]["CUST_NAME"] = CustName;
    dtUpt.Rows[intDs]["REMARK"] = Description;
    dtUpt.Rows[intDs]["ATTACHMENT"] = Receipt;
    dtUpt.Rows[intDs]["CURR"] = curr.SelectedItem.Value; if(TripDate !="" && ComStyleCheck.CheckDateStyle(TripDate))
    {
    dtUpt.Rows[intDs]["TRIP_DATE"] = TripDate ;
    } if( Qty !="" && ComStyleCheck.IsDecimail(Qty))
    {
    dtUpt.Rows[intDs]["QTY"] = Qty;
    } if( Amt !="" && ComStyleCheck.IsDecimail(Amt))
    {
    dtUpt.Rows[intDs]["AMT"] = Amt;
    } if( LocalAmt !="" && ComStyleCheck.IsDecimail(LocalAmt))
    {
    dtUpt.Rows[intDs]["LOCAL_AMT"] = LocalAmt;
    }
    }
    // add new row
    DataRow dr = dtUpt.NewRow(); if(dtUpt.Rows.Count>0)
    {
    string lastDate  = dtUpt.Rows[dtUpt.Rows.Count-1]["TRIP_DATE"].ToString();
    if( ComStyleCheck.CheckDateStyle(lastDate))
    {
    dr["TRIP_DATE"] = DateTime.Parse(lastDate).AddDays(1).ToString("dd/MM/yyyy");
    }
    else
    {
    dr["TRIP_DATE"] = DateTime.Parse(gd_start.Value).ToString("dd/MM/yyyy");
    }
    }
    else
    {
    dr["TRIP_DATE"] = DateTime.Parse(gd_start.Value).ToString("dd/MM/yyyy");
    }
    dr["ATTACHMENT"] = "E-";
    dtUpt.Rows.Add(dr);

    dg_Souvenir.DataSource = dtUpt;
    dg_Souvenir.DataBind(); ComLogOutput.WriteLogFile("btn_Souvenir_Insert_Click end");
    }
    catch(Exception ex)
    {
    ComLogOutput.WriteLogFile(ex);

    lbl_Err.Text = ex.Message;
    }
    } /// </summary>
    private void BindData_pnlSouvenir()
    {
    try
    {
    ComLogOutput.WriteLogFile("BindData_pnlSouvenir Begin");

    // get trip Souvenir
    DataSet dsExc = new TripReportDB().GetTripSouvenir(is_serial.Value,gs_cmpy.Value); Session["dsp_TripReport_Souvenir"] = dsExc.Tables[0];
    dg_Souvenir.DataSource = dsExc.Tables[0];
    dg_Souvenir.DataBind();

    // count souvenir total amt
    SourAmtChanged(new object(),new EventArgs());

    if(dsExc.Tables[0].Rows.Count>0)
    {
    txt_Souvenir_Re.Text = dsExc.Tables[0].Rows[0]["REMARK2"].ToString();
    } ComLogOutput.WriteLogFile("BindData_pnlSouvenir end");     
    }
    catch(Exception ex)
    {
    ComLogOutput.WriteLogFile(ex);

    lbl_Err.Text = ex.Message;
    }
    }
      

  6.   

    winform 的!!我的datagird刚开始是空的。可编辑。我希望的是datagrid里面的数据被修改后能一起被提交。难道一定要用循环吗?
      

  7.   

    绑定数据源后,数据的提交不需要理会datagrid,而只需对datatable或dataset进行操作,dataSet.Tables["表名"].AcceptChanges();就行了。
    如果你没把datagrid和datatable绑定,则需要将datagrid中的数据写入datatable,然后再用Tables["表名"].AcceptChanges();进行提交。