我正在从查询中随机获取价值 而且我想以与代码编写顺序相同的顺序绑定表,以便该表 正确形成 但是接收值的顺序与查询顺序不同,因此顺序值在生成的表中放错了位置。 在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 ...因此,如果以这种方式读取值然后值将在正确的位置上错位,如何在代码中进行管理,以便将正确的值放置在正确的位置。 任何想法将不胜感激
答案 0 :(得分:1)
您可以...
将所有行读入数据结构,并在创建输出之前对它们进行排序(我建议在这里使用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.