将值检索放在正确的位置和顺序,而不考虑顺序



我从查询中随机接收值 我想按照与代码中编写的顺序相同的顺序绑定表,以便该表 正确成型 但是以与查询不同的顺序接收值,因此订单值在生成的表中放错了位置。 在 prop_name 和 tdc_property 列中接收值为 下面

  • prop_name---- tdc_property

  • 4吨最大值----------- 2

  • 2尺寸最大-------- 1

  • 3吨明----------- 3

  • 1sizmin----------- 4

读取数据

OracleDataReader ReadData = objFetchCmd.ExecuteReader();

while (ReadData.Read())
{    
if (prop_name == "1sizMin")
{     
lblStdSize_Toler.Text = lblStdSize_Toler.Text + "<td class='td-First-col-value'><center>" + tdc_property + "</center></td>";
StdSize = StdSize + 1;
}
if (prop_name == "2sizeMax")
{
lblStdSize_Toler.Text = lblStdSize_Toler.Text + "<td class='td-sec-col-value'><center>" + tdc_property + "</center></td>";
StdSize = StdSize + 1;
}
if (prop_name == "3tolMin")
{
lblStdSize_Toler.Text = lblStdSize_Toler.Text + "<td class='td-sec-col-value'><center>" + tdc_property + "</center></td>";
StdSize = StdSize + 1;
}
if (prop_name == "4tolMax")
{
lblStdSize_Toler.Text = lblStdSize_Toler.Text + "<td class='bo-rig-top'><center>" + tdc_property + "</center></td></tr>";
StdSize = StdSize + 1;
}

代码的编写方式是,它读取行按行的值实际上它应该首先读取 1sizMin 然后读取 2sizeMax。依此类推,但在查询的输出中,它接收 4tolMax 然后是 2sizeMAx...因此,如果以这种方式读取值,那么值将从如何在代码中进行管理的确切位置错放位置,以便将正确的值放置在正确的位置。 任何想法将不胜感激

你可以...

  • 重写查询,使行按所需顺序排列(请参阅 plsql ORDER BY 子句(
  • 在创建输出之前,将所有行读入数据结构并在内存中对其进行排序(我建议在这里System.Data.DataTable(

  • 您也可以像 Tofik 建议的那样将查询分成 4 个,但我认为在性能方面"查询越少越好">

将查询更改为首先只读 1sizMin,然后读取 2sizeMax 等...逐个添加这些类别。

例:

//set query
while (ReadData.Read())
{                
lblStdSize_Toler.Text = lblStdSize_Toler.Text + "<td class='td-First-col-value'><center>" + tdc_property + "</center></td>";
StdSize = StdSize + 1;          
}
//set query
while (ReadData.Read())
{              
lblStdSize_Toler.Text = lblStdSize_Toler.Text + "<td class='td-sec-col-value'><center>" + tdc_property + "</center></td>";
StdSize = StdSize + 1;              
}
//set query
while (ReadData.Read())
{              
lblStdSize_Toler.Text = lblStdSize_Toler.Text + "<td class='td-sec-col-value'><center>" + tdc_property + "</center></td>";
StdSize = StdSize + 1;             
}
//set query
while (ReadData.Read())
{              
lblStdSize_Toler.Text = lblStdSize_Toler.Text + "<td class='bo-rig-top'><center>" + tdc_property + "</center></td></tr>";
StdSize = StdSize + 1;              
}

告诉我它是否适合你。

----编辑----

或者,构建 4 个不同的字符串,然后将它们放在一起并将其插入到 lblStdSize_Toler.Text 中。喜欢:

while (ReadData.Read())
{    
if (prop_name == "1sizMin")
{     
1sizMinString = 1sizMinString + "<td class='td-First-col-value'><center>" + tdc_property + "</center></td>";
StdSize = StdSize + 1;
}
if (prop_name == "2sizeMax")
{
2sizeMaxString = 2sizeMaxString  + "<td class='td-sec-col-value'><center>" + tdc_property + "</center></td>";
StdSize = StdSize + 1;
}
if (prop_name == "3tolMin")
{
3tolMinString = 3tolMinString  + "<td class='td-sec-col-value'><center>" + tdc_property + "</center></td>";
StdSize = StdSize + 1;
}
if (prop_name == "4tolMax")
{
4tolMaxString = 4tolMaxString  + "<td class='bo-rig-top'><center>" + tdc_property + "</center></td></tr>";
StdSize = StdSize + 1;
}
lblStdSize_Toler.Text=1sizMinString +2sizeMaxString +3tolMinString +4tolMaxString ;

只是提示。用:

StdSize++;

而不是

StdSize = StdSize + 1;

以获得更干净的代码。

您可以在数据库中添加一个名为"SortOrder"的列,其中数字作为数据类型,并在执行查询时添加,您可以像这样对数据进行排序:

select * from yourTable order by SortOrder.

最新更新