不论顺序如何,都将获取的值放在正确的位置和顺序上

时间:2018-10-05 11:05:38

标签: c# asp.net

我正在从查询中随机获取价值 而且我想以与代码编写顺序相同的顺序绑定表,以便该表 正确形成 但是接收值的顺序与查询顺序不同,因此顺序值在生成的表中放错了位置。 在prop_name和tdc_property列中接收值为 低于

  • prop_name ---- tdc_property

  • 4tolMax ----------- 2

  • 2sizeMax -------- 1

  • 3tolMin ----------- 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..so,但是在查询的输出中,它接收4tolMax,然后接收2sizeMAx ...因此,如果以这种方式读取值然后值将在正确的位置上错位,如何在代码中进行管理,以便将正确的值放置在正确的位置。 任何想法将不胜感激

3 个答案:

答案 0 :(得分:1)

您可以...

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

  • 您也可以按照Tofik的建议将查询分为4个,但我认为在性能方面“查询越少越好”

答案 1 :(得分:0)

将查询更改为仅读取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;

获取更干净的代码。

答案 2 :(得分:0)

您可以在数据库中添加一个名为'SortOrder'的列,并将Number作为数据类型,并在执行查询时添加您可以对数据进行如下排序:

select * from yourTable order by SortOrder.