0

私のSQLクエリは、複数の列の1つの行を取得します。'|'を使用して文字列に保存しました 列を区別するためのセパレータ。

そして、その文字列をページ<textarea>のフィールドに出力し.aspxます。

私の質問は、その後| セパレータの次の列はtextareaの次の行にありますか?Enterキーを押すのと同じように?

コード:

dtOutput = Generix.getData("dbo.EventMsg E Left Join dbo.ATMStatusHistory A On E.Code=A.Fault", "Distinct E.Fault_Short_Name", "A.Code In (" + sFaultNumber + ") And IsNull(Fault_Short_Name,'')<>''", "", "", 1);
sOtherFaults = "";
foreach (DataRow drOutput in dtOutput.Rows)
{
foreach (DataColumn dcOutput in dtOutput.Columns)
{
sOtherFaults += ((sOtherFaults == "") ? "" : ":") + Convert.ToString(drOutput[dcOutput]);
}
}

 sOutput += "|" + sOtherFaults + "|" + sClosedFault + "|" + sTemp + "|";
                            Response.Write(sOutput);
4

3 に答える 3

2

試す:

string.Join(@"|\r\n", sOutput, sOtherFaults, sClosedFault, sTemp);
于 2012-08-08T07:07:41.730 に答える
1

私はあなたが何を意味するのか本当に理解していませんが、これを試してください

 sOutput += "|" + sOtherFaults + "|" + sClosedFault + "|" + sTemp + "|";

 Response.Write(sOutput.Replace("|", "\r\n"));

または

 sOutput += "|" + sOtherFaults + "|" + sClosedFault + "|" + sTemp + "\r\n";

 Response.Write(sOutput);
于 2012-08-08T07:03:15.857 に答える
1

StringBuilderこのように、ここを使ったほうがいいと思います。

var responseString = new StringBuilder(sOutput);
resposeString.AppendLine("|");

foreach (DataRow drOutput in dtOutput.Rows)
{
    foreach (DataColumn dcOutput in dtOutput.Columns)
    {
        resposeString.AppendFormat("{0}:", Convert.ToString(drOutput[dcOutput]));
    }
}

// Remove last : delimiter
responseString.Remove(responseString.Length - 1, 1);

resposeString.AppendLine("|");
resposeString.Append(sClosedFault);
resposeString.AppendLine("|");
resposeString.Append(sTemp);

Response.Write(responseString.ToString());

このようString.Formatに、多くの中間文字列のインスタンス化を節約できますが、ループ構造にもうまく適合します。

于 2012-08-08T08:03:53.190 に答える