我在DataGrid中的指定位置插入了一行,它在指定的位置插入了一后.但是这行的东西修改后就跑到最后去了.在插入位置是空行. 再次插入一行,刚才跑到后面的那行又跑回来了.
代码如下.
DataRow newrow = DT.NewRow();
newrow["isTotal"] = false;
DT.Rows.InsertAt(newrow,this.dataGrid1.CurrentCell.RowNumber);
DT.AcceptChanges();
this.dataGrid1.Refresh();
代码如下.
DataRow newrow = DT.NewRow();
newrow["isTotal"] = false;
DT.Rows.InsertAt(newrow,this.dataGrid1.CurrentCell.RowNumber);
DT.AcceptChanges();
this.dataGrid1.Refresh();
看看现在DataGrid是在按照什么排序.
另外看看DataSet中有没有自动递增的字段.
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;namespace insertRow
{
/// <summary>
/// Form1 的摘要说明。
/// </summary>
public class Form1 : System.Windows.Forms.Form
{
private System.Windows.Forms.DataGrid dataGrid1;
private System.Windows.Forms.ContextMenu contextMenu1;
private DataView dv;
private DataTable DT;
private System.Windows.Forms.MenuItem menuItem1;
private MenuStrip menuStrip1;
private ToolStripMenuItem 文件ToolStripMenuItem;
private ToolStripMenuItem 新建ToolStripMenuItem;
/// <summary>
/// 必需的设计器变量。
/// </summary>
private System.ComponentModel.Container components = null; public Form1()
{
//
// Windows 窗体设计器支持所必需的
//
InitializeComponent();
DT = new DataTable();
this.DT = this.GetDataSource(ref DT,true,50,7);
//
// TODO: 在 InitializeComponent 调用后添加任何构造函数代码
//
} /// <summary>
/// 清理所有正在使用的资源。
/// </summary>
protected override void Dispose( bool disposing )
{
if( disposing )
{
if (components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
} #region Windows 窗体设计器生成的代码
/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.dataGrid1 = new System.Windows.Forms.DataGrid();
this.contextMenu1 = new System.Windows.Forms.ContextMenu();
this.menuItem1 = new System.Windows.Forms.MenuItem();
this.menuStrip1 = new System.Windows.Forms.MenuStrip();
this.文件ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.新建ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
((System.ComponentModel.ISupportInitialize)(this.dataGrid1)).BeginInit();
this.menuStrip1.SuspendLayout();
this.SuspendLayout();
//
// dataGrid1
//
this.dataGrid1.ContextMenu = this.contextMenu1;
this.dataGrid1.DataMember = "";
this.dataGrid1.HeaderForeColor = System.Drawing.SystemColors.ControlText;
this.dataGrid1.Location = new System.Drawing.Point(24, 32);
this.dataGrid1.Name = "dataGrid1";
this.dataGrid1.Size = new System.Drawing.Size(712, 480);
this.dataGrid1.TabIndex = 0;
//
// contextMenu1
//
this.contextMenu1.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] {
this.menuItem1});
//
// menuItem1
//
this.menuItem1.Index = 0;
this.menuItem1.Text = "插入一行";
this.menuItem1.Click += new System.EventHandler(this.menuItem1_Click);
//
// menuStrip1
//
this.menuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.文件ToolStripMenuItem});
this.menuStrip1.Location = new System.Drawing.Point(0, 0);
this.menuStrip1.Name = "menuStrip1";
this.menuStrip1.Size = new System.Drawing.Size(760, 24);
this.menuStrip1.TabIndex = 1;
this.menuStrip1.Text = "menuStrip1";
//
// 文件ToolStripMenuItem
//
this.文件ToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.新建ToolStripMenuItem});
this.文件ToolStripMenuItem.Name = "文件ToolStripMenuItem";
this.文件ToolStripMenuItem.Text = "文件";
//
// 新建ToolStripMenuItem
//
this.新建ToolStripMenuItem.Name = "新建ToolStripMenuItem";
this.新建ToolStripMenuItem.Text = "新建";
//
// Form1
//
this.AutoScaleBaseSize = new System.Drawing.Size(6, 14);
this.ClientSize = new System.Drawing.Size(760, 533);
this.Controls.Add(this.dataGrid1);
this.Controls.Add(this.menuStrip1);
this.MainMenuStrip = this.menuStrip1;
this.Name = "Form1";
this.Text = "Form1";
this.Load += new System.EventHandler(this.Form1_Load);
((System.ComponentModel.ISupportInitialize)(this.dataGrid1)).EndInit();
this.menuStrip1.ResumeLayout(false);
this.ResumeLayout(false);
this.PerformLayout(); }
#endregion /// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main()
{
Application.Run(new Form1());
}
private void menuItem1_Click_1(object sender, System.EventArgs e)
{
}
private DataTable GetDataSource(ref DataTable dt,bool newColumn,int rows,int cols)
{
//增加新列
if(newColumn)
{
dt.Columns.Add("jsbw", typeof(System.String)); //0
dt.Columns.Add("qdh", typeof(System.String)); //1
dt.Columns.Add("qdmc", typeof(System.String)); //2
dt.Columns.Add("dw", typeof(System.String)); //3
dt.Columns.Add("jss", typeof(System.String)); //4
dt.Columns.Add("gcl", typeof(System.Double)); //5
dt.Columns.Add("bz", typeof(System.String)); //6
dt.Columns.Add("isTotal", typeof(System.Boolean)); //7
}
//增加行
dt.BeginLoadData();
for (int intRowIndex=0;intRowIndex<rows;intRowIndex++)
{
DataRow newRow = dt.NewRow();
newRow["isTotal"] = false;
// newRow1["isTotal"] = true;
dt.Rows.Add(newRow);
}
dt.EndLoadData();
return dt;
} private void Form1_Load(object sender, System.EventArgs e)
{
dv = new DataView(DT);
dv.AllowNew = false;
dv.RowFilter = "isTotal=false";
this.dataGrid1.DataSource = dv; } private void menuItem1_Click(object sender, System.EventArgs e)
{
DataRow newrow = DT.NewRow();
newrow["isTotal"] = false;
DT.Rows.InsertAt(newrow,this.dataGrid1.CurrentCell.RowNumber);
DT.AcceptChanges();
this.dataGrid1.Refresh();
}
}
}
/// <summary>
/// bind misc datagrid
/// </summary>
private void BindData_pnlMisc()
{
try
{
ComLogOutput.WriteLogFile("BindData_pnlMisc Begin");
// get tirp misc expenses
DataSet dsExc = new TripReportDB().GetTripMisc(is_serial.Value,gs_cmpy.Value); Session["dsp_TripReport_Misc"] = dsExc.Tables[0];
dg_Misc.DataSource = dsExc.Tables[0];
dg_Misc.DataBind();
// calculate total misc amt
MiscAmtChanged(new object(),new EventArgs());
if(dsExc.Tables[0].Rows.Count>0)
{
txt_Misc_Re.Text = dsExc.Tables[0].Rows[0]["REMARK"].ToString();
} ComLogOutput.WriteLogFile("BindData_pnlMisc end");
}
catch(Exception ex)
{
ComLogOutput.WriteLogFile(ex);
lbl_Err.Text = ex.Message;
}
}
/// <summary>
/// Misc Insert button Click
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btn_Misc_Insert_Click(object sender, System.EventArgs e)
{
try
{
ComLogOutput.WriteLogFile("btn_Misc_Insert_Click Begin");
if(this.Session["dsp_TripReport_Misc"]==null)
{
BindData_pnlMisc();
} DataTable dtSource = (DataTable)Session["dsp_TripReport_Misc"] ;
for( int i = 0 ; i < this.dg_Misc.Items.Count ; i ++ )
{
// get update value
TextBox txtCity = (TextBox)dg_Misc.Items[i].FindControl("dg_Misc_txt_Country");
DropDownList ucCurr = (DropDownList)dg_Misc.Items[i].FindControl("dg_Misc_Curr");
string TripDate = ((UC_CalendarText)this.dg_Misc.Items[i].FindControl("dg_Misc_txt_TripDate")).Text.Trim();
string Particular = ((TextBox)this.dg_Misc.Items[i].FindControl("dg_Misc_txt_Particular")).Text.Trim();
string Purpose = ((TextBox)this.dg_Misc.Items[i].FindControl("dg_Misc_txt_Purpose")).Text.Trim();
string Amt = ((TextBox)this.dg_Misc.Items[i].FindControl("dg_Misc_txt_Amt")).Text.Trim();
string LocalAmt = ((TextBox)this.dg_Misc.Items[i].FindControl("dg_Misc_txt_LocalAmt")).Text.Trim();
string Receipt = ((TextBox)this.dg_Misc.Items[i].FindControl("dg_Misc_txt_Receipt")).Text.Trim();
if(ComStyleCheck.CheckDateStyle(TripDate))
{
dtSource.Rows[i]["TRIP_DATE"] = TripDate ;
} if( ComStyleCheck.CheckRequired(Amt) && ComStyleCheck.IsDecimail(Amt))
{
dtSource.Rows[i]["AMT"] = Amt;
}
if( ComStyleCheck.CheckRequired(LocalAmt) && ComStyleCheck.IsDecimail(LocalAmt))
{
dtSource.Rows[i]["LOCAL_AMT"] = LocalAmt;
} dtSource.Rows[i]["PARTICULAR"] = Particular;
dtSource.Rows[i]["PURPOSE"] = Purpose;
dtSource.Rows[i]["ATTACHMENT"] = Receipt;
dtSource.Rows[i]["CURR"] = ucCurr.SelectedItem.Value;
dtSource.Rows[i]["COUNTRY"] = txtCity.Text;
} // add new row
DataRow dr = dtSource.NewRow();
if(dtSource.Rows.Count>0)
{
string lastDate = dtSource.Rows[dtSource.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"] = "D-";
dtSource.Rows.Add(dr);
dg_Misc.DataSource = dtSource;
dg_Misc.DataBind(); ComLogOutput.WriteLogFile("btn_Misc_Insert_Click end");
}
catch(Exception ex)
{
ComLogOutput.WriteLogFile(ex);
lbl_Err.Text = ex.Message;
}
}
/// Misc Save button Click
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private bool btn_Misc_Save_Click()
{
try
{
ComLogOutput.WriteLogFile("btn_Misc_Save_Click Begin");
MiscAmtChanged(new object(),new EventArgs());
bool flag = true;
//Creat a new datatable
DataTable dtUpt = null;
if(this.Session["dsp_TripReport_Misc"]==null)
{
BindData_pnlMisc();
} //Copy the construct of the dataset
DataTable dtOri = (DataTable)this.Session["dsp_TripReport_Misc"];
dtUpt= dtOri.Copy(); for(int intDs = 0; intDs < dg_Misc.Items.Count;intDs++)
{
// get datagrid object
DropDownList ucCurr = (DropDownList)dg_Misc.Items[intDs].FindControl("dg_Misc_Curr");
TextBox txtCity = (TextBox)dg_Misc.Items[intDs].FindControl("dg_Misc_txt_Country"); UC_CalendarText TripDate = ((UC_CalendarText)this.dg_Misc.Items[intDs].FindControl("dg_Misc_txt_TripDate"));
TextBox Particular = ((TextBox)this.dg_Misc.Items[intDs].FindControl("dg_Misc_txt_Particular"));
TextBox Purpose = ((TextBox)this.dg_Misc.Items[intDs].FindControl("dg_Misc_txt_Purpose"));
TextBox Amt = ((TextBox)this.dg_Misc.Items[intDs].FindControl("dg_Misc_txt_Amt"));
TextBox LocalAmt = ((TextBox)this.dg_Misc.Items[intDs].FindControl("dg_Misc_txt_LocalAmt"));
TextBox Receipt = ((TextBox)this.dg_Misc.Items[intDs].FindControl("dg_Misc_txt_Receipt"));
dtUpt.Rows[intDs]["CURR"] = ucCurr.SelectedItem.Value; if(!ComStyleCheck.CheckRequired(TripDate.Text) || !ComStyleCheck.CheckDateStyle(TripDate.Text) )
{
TripDate.SetError = true;
flag = false;
}
else
{
TripDate.SetError = false;
dtUpt.Rows[intDs]["TRIP_DATE"] = TripDate.Text.Trim() ;
} if(Receipt.Text.Trim().Replace("-","").Length > 5)
{
Receipt.BackColor = Color.Red;
flag = false;
}
else
{
Receipt.BackColor = Color.White;
dtUpt.Rows[intDs]["ATTACHMENT"] = Receipt.Text.Trim().Replace("-","");
}
dtUpt.Rows[intDs]["COUNTRY"] = txtCity.Text.Trim(); dtUpt.Rows[intDs]["PARTICULAR"] = Particular.Text.Trim(); dtUpt.Rows[intDs]["PURPOSE"] = Purpose.Text.Trim(); if(ComStyleCheck.CheckRequired(Amt.Text.Trim()) && !ComStyleCheck.CheckMoneyValue(Amt.Text.Trim(),6,2) )
{
Amt.BackColor = Color.Red;
flag = false;
}
else
{
Amt.BackColor = Color.White;
if(Amt.Text.Trim()!="")
{
dtUpt.Rows[intDs]["AMT"] = Amt.Text.Trim();
}
} if(ComStyleCheck.CheckRequired(LocalAmt.Text.Trim()) && !ComStyleCheck.CheckMoneyValue(LocalAmt.Text.Trim(),6,2) )
{
LocalAmt.BackColor = Color.Red;
flag = false;
}
else
{
LocalAmt.BackColor = Color.FromArgb(217,217,217);
if(LocalAmt.Text.Trim()!="")
{
dtUpt.Rows[intDs]["LOCAL_AMT"] = LocalAmt.Text.Trim();
}
}
}
if(flag == false)
{
//lbl_Err.Text = "you must input correct info !";
lbl_Err.Text =ComLocalDiff.GetMessageById("1126",UserInfo.LangCode);
return false;
}
// update misc to DB
new TripReportDB().UpdateMisc(gs_cmpy.Value,is_serial.Value,UserInfo.UID,dtUpt); new TripReportDB().UpdateRe(gs_cmpy.Value,is_serial.Value,UserInfo.UID,"6",txt_Misc_Re.Text); BindData_pnlMisc(); ComLogOutput.WriteLogFile("btn_Misc_Save_Click end"); return true;
}
catch(Exception ex)
{
ComLogOutput.WriteLogFile(ex);
lbl_Err.Text = ex.Message;
return false;
}
}
看看现在DataGrid是在按照什么排序.
另外看看DataSet中有没有自动递增的字段.