数据库中有tbltest(item,code,name,description),在datagrid中的显示如下1 aa aaname aatest
2 bb bbname bbtest
3 cc ccname cctest
4 dd ddname ddtest
5 ee eename eetest
现在要求在2和3之间插入一个值,排成
1 aa aaname aatest
2 bb bbname bbtest
3 kk kkname kktest //datagrid中插入的新行
4 cc ccname cctest //原来的item=3变成了item=4,依此类推
5 dd ddname ddtest
6 ee eename eetest
同样,在删除中间某行的情况下,也要能对item重新排序,不出现1,2,4,5的情况。同时,如果是在最后一行添加数据,必须是取max(item)+1请教各位达人,如何实现啊?保存数据的时候是通过传递xml字串到数据库,执行StoredProcedure操作来实现的。
2 bb bbname bbtest
3 cc ccname cctest
4 dd ddname ddtest
5 ee eename eetest
现在要求在2和3之间插入一个值,排成
1 aa aaname aatest
2 bb bbname bbtest
3 kk kkname kktest //datagrid中插入的新行
4 cc ccname cctest //原来的item=3变成了item=4,依此类推
5 dd ddname ddtest
6 ee eename eetest
同样,在删除中间某行的情况下,也要能对item重新排序,不出现1,2,4,5的情况。同时,如果是在最后一行添加数据,必须是取max(item)+1请教各位达人,如何实现啊?保存数据的时候是通过传递xml字串到数据库,执行StoredProcedure操作来实现的。
DataSet负责添加/插入等操作
DataView负责排序绑定时用DataView进行绑定
#region 为DataTable增加序号列(true:递增,false:递减),返回新的DataTable
public DataTable AddNumber(DataTable table_object_name,string column_name,bool direction)
{
try
{
dt = table_object_name;
//增加列
dt.Columns.Add(column_name,System.Type.GetType("System.Int32"));
if(direction == true)
{
//递增赋值
for(int i=0;i<dt.Rows.Count;i++)
{
dt.Rows[i][column_name] = dt.Rows.Count-i;
}
return dt;
}
else
{
//递减赋值
for(int i=dt.Rows.Count;i>0;i--)
{
dt.Rows[i-1][column_name] = i;
}
return dt;
}
}
catch(Exception error)
{
throw error;
}
}
#endregion