最近两个月的总结——devgridview,dataset
最近两个月开发了两个小画面——合同管理系统
刚刚接到任务的时候发现画面有不下余80多个控件,对于我这个只有几个月工作经验的菜鸟中的菜鸟来说有些吓人,当时问了下老员工如果他们做,多久能做完?
给我的答复:画面比较复杂,业务比较多,最多的时候同时保存十四张表,数据量大了怎么办等等。。。
不管怎么样,给我任务了总要完成啊。没办法试着做,不会请教同事。不过还好,将近一个月的时间做完了第一个复杂的画面,第二个汇总的画面简单多了,两天搞定。
学到的技术自我感觉提升了不少,
1、开发自定义控件,页面上有很多是重复的控件,
2、属性的get set方法体会的更深了
public bool ControlEnable
{
set {
this.UCTxtSubCode.Enabled =value;
this.UCTxtSubName.Enabled = value;
}
}
3、blod 在oralce数据库中保存和更新,必须转换为字节流
private byte[] FileToByte(string pStrFName)
{
if (pStrFName.Trim() == string.Empty)
{
pStrFName = " ";
}
byte[] values = System.Text.Encoding.Default.GetBytes(pStrFName);
return values;
}
private void GetChgNote(DataRow row)
{
if (row["CONTENT"] == DBNull.Value) return;
byte[] btData = (byte[])row["CONTENT"];
//显示合同文本
MOContractEdit.Text = System.Text.Encoding.Default.GetString(btData);
}
4、在devgridview中的中间添加新行(通过行号)
我的做法比较麻烦
如果gridview绑定的表有行号等做主键,则根据行号确定在gridview绑定的表中插入数据的位置,然后在重新根据行号排序
如果没有行号,那么自己临时添加行号
//新增行号列一排序用
PlanLogDayDS.Tables["INVPLAN"].Columns.Add("gcLine", typeof(int));
//排序行号
SortRowNo(PlanLogDayDS.Tables["INVPLAN"], "gcLine");
int selrow = GridVDate.FocusedRowHandle;
DataRow newRow = PlanLogDayDS.Tables["INVPLAN"].NewRow();
for (int i = selrow; i < PlanLogDayDS.Tables["INVPLAN"].Rows.Count; i++)
{
DataRow row = PlanLogDayDS.Tables["INVPLAN"].Rows[i];
if (row.RowState == DataRowState.Deleted) continue;
//行号
row["gcLine"] = Convert.ToInt32(row["gcLine"]) + 1;
}
newRow["gcLine"] = selrow + 1;
PlanLogDayDS.Tables["INVM011_INVPLAN"].Rows.Add(newRow);
DataTable dt = PlanLogDayDS.Tables["INVPLAN"].Clone();
dt.Clear();
DataRow[] drs = PlanLogDayDS.Tables["INVPLAN"].Select("", "gcLine asc");
foreach (DataRow r in drs)
{
dt.ImportRow(r);
}
PlanLogDayDS.Tables["INVPLAN"].Clear();
PlanLogDayDS.Tables["INVPLAN"].Merge(dt);
PlanLogDayDS.Tables["INVPLAN"].Columns.Remove("gcLine");