我从查询中随机接收值 我想按照与代码中编写的顺序相同的顺序绑定表,以便该表 正确成型 但是以与查询不同的顺序接收值,因此订单值在生成的表中放错了位置。 在 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.