日期:2014-05-20  浏览次数:20832 次

怎么按选中的顺序排序(不要按DataTable中的ID排序)
选择 生产订单号 行号 生产订单类型
  √ 0012112 9 标准
  √ 0012133 3 标准
  √ 0023312 10 标准
  √ 0012123 4 标准
  0012411 42 标准
  0012113 12 标准
  0012331 39 标准

DataTable
 id 生产订单号 行号 生产订单类型

  1 0012123 4 标准
  4 0012133 3 标准
  5 0023312 10 标准
  8 0012112 9 标准

现在有个打印按钮 输出的页面是按 Id 排序的

怎么才能 让打印的顺序是按照我选中的顺序打印啊 


  
 

------解决方案--------------------
private void tsbPrint_Click(object sender, EventArgs e)
{
List <string> routingId = new List <string> ();
Dictionary <int, string> sort = new Dictionary <int, string> ();
int sortSeq = 0;
for(int i=0;i <griView.RowCount ;i++)
{
if ((bool)griView.GetRowCellValue(i, griView.Columns.ColumnByFieldName( "选择 ")))
{
routingId.Add(griView.GetRowCellValue(i, griView.Columns.ColumnByFieldName( "RoutingId ")).ToString());

sort.Add(sortSeq, griView.GetRowCellValue(i, griView.Columns.ColumnByFieldName( "RoutingId ")).ToString());
sortSeq++;
}
}
string[] arrRouting=routingId.ToArray();
string routingIds = string.Join( ", ", arrRouting);
DataTable dtHead = GetHeadData(routingIds);
DataTable dtDetail = GetDetailData(routingIds);
DataTable dtHeadSort = dtHead.Clone();
foreach (var item in sort)
{
DataRow row = dtHead.Select( "moRoutingId= " + item.Value)[0];
dtHeadSort.ImportRow(row);
}
}


private DataTable GetHeadData(string filter)
{
string str = "select * from DB where id in ( " + filter + ") ";
return SqlHelper.ExecuteDataset(str).Tables[0];
}