0

因此,我正在使用 aXmlWriter和 a构建一些 XML,DataSet但是当需要循环遍历其中的每个DataRow时,DataSet我无法弄清楚如何像“userid”这样的引用以及从存储过程中返回的引用。在页面代码中,我看到他们正在Eval("userid")使用相同的存储过程或其他方式执行此操作,但我现在在 ASHX 中使用它......请参阅“这里发生了什么??” 在下面的代码中......

DataSet getData;
getData = SqlHelper.ExecuteDataset(ConfigurationManager.ConnectionStrings["connstr"].ConnectionString, CommandType.StoredProcedure, "Course_NewReportGet_Get_Sav", objPAra)

//COUNT NUMBER OF RESULTS FOR COUNT ATTRIBUTE (must add!)

XmlWriterSettings settings = new XmlWriterSettings();
settings.Indent = true;
settings.IndentChars = ("    ");
using(XmlWriter writer = XmlWriter.Create("data.xml", settings))
{
    writer.WriteStartElement("changes");
    writer.WriteAttributeString("clientname", foundCompany.CompanyName);
    writer.WriteAttributeString("clientid", foundCompany.Abbreviation);
    //writer... INSERT COUNT ATTRIBUTE

    foreach(DataRow dr in getData.Tables)
    {
        writer.WriteStartElement("change");
        writer.WriteStartElement("user");
        writer.WriteAttributeString("userid", dr... WHAT GOES HERE??;                    
    }                
    writer.WriteEndElement();
}
4

5 回答 5

0

尝试使用DataRow.Item属性,如下所示

dr["userid"]
于 2009-03-23T20:40:18.287 回答
0

这很简单。您的数据行 (dr) 中的整数列将通过以下方式访问:

int someVal = (int)dr["ColumnName"];
于 2009-03-23T20:40:31.483 回答
0

首先,你的 foreach 是错误的。你需要循环过去getData.Tables[0].Rows。如果有超过 1 个表,则需要遍历 getData.Tables。

但是,答案是它是一个索引属性。所以,dr["userId"]会给你带来价值。

foreach (DataRow dr in getData.Tables[0].Rows) {
   / * blah, blah */
   writer.WriteAttributeString("userId", dr["userId"]);
}
于 2009-03-23T20:41:47.613 回答
0

你的内在 foreach 是问题所在。

应该

if(getData.Tables.Count > 0){
   foreach(DataRow dr in getData.Tables[0].Rows){
      writer.WriteAttributeString("userid", dr["UserID"]);
   }
}
于 2009-03-23T20:43:17.717 回答
0

您将要添加一个迭代级别 - 您当前正在迭代您的 中的表foreach(DataRow dr in getData.Tables),DataRow 对象低于一个级别。

于 2009-03-23T20:43:35.703 回答