0

アプリケーションにDataTableがあります。DataColumnsとRowsを保持します。再帰的に呼び出して、InnerXmlクエリに入力したいだけです。ここで、フィールド名はDataColumns値であり、ValueはDataTableの行値である必要があります。以下は私の試したコードです。しかし、DataTableを繰り返してInnerXmlに入力する考えはありません。

    DataTable DT = new DataTable();

    for(int i=0 ; i<DT.Length ;i++){
               batchElement.InnerXml =
               "<Method ID='4' Cmd='New'>" + "<Field Name='" + DT.DataColumn[] + "'>" + DT.row + "</Field></Method>";

    }

私を助けてください。

4

1 に答える 1

1

単純に列挙したいですか、DataTableそれとも実際に再帰的に繰り返したいですか?サンプルコードには再帰が表示されていないため、コンパイルされないいくつかの部分を含む列挙が表示されているため、質問します。

データテーブルをシリアル化しようとしていると思います。その場合、次の例がおそらく機能します。

StringBuilder innerXml = new StringBuilder();
int methodId = 0;
foreach(DataRow row in DT.Rows)
{
    innerXml.AppendFormat("<Method ID='{0}' Cmd='New'>", methodId.ToString());
    methodId += 1;

    foreach(DataColumn column in DT.Columns)
    {
        innerXml.AppendFormat("<Field Name='{0}'>{1}</Field>", column.ColumnName, row[column.ColumnName]);
    }

    innerXml.AppendLine("</Method>");
}
batchElement.InnerXml = innerXml.ToString();

上記がコンパイルされない場合はお詫びします-ハンドタイプ-しかしうまくいけばあなたを正しい軌道に乗せるはずです。

注意:あなたの例に基づいて、Xmlで行とセルの要素をどのように分割するのかはよくわかりません。私はXml構造についていくつかの仮定をしましたが、うまくいけば、

于 2012-07-09T08:32:09.620 に答える