所以我使用的是XmlWriterDataSet建设一些XML但是当它穿过DataRow每个DataSet谈到时间循环我想不通怎么样“用户id”,并使得从存储过程回来做参考。在页面代码中,我看到他们这样做是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();
}
有帮助吗?

解决方案

首先,您的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"]);
}

其他提示

这是很简单的。在您的数据行(DR)的整数列将与被访问:

int someVal = (int)dr["ColumnName"];

您内的foreach是问题。

if(getData.Tables.Count > 0){
   foreach(DataRow dr in getData.Tables[0].Rows){
      writer.WriteAttributeString("userid", dr["UserID"]);
   }
}

您会想添加一个迭代的水平 - 你目前遍历表在foreach(DataRow dr in getData.Tables)的DataRow对象是下一级

scroll top