所以我使用XmlWriter
和DataSet
构建了一些XML,但是当我需要循环遍历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();
}
答案 0 :(得分:0)
尝试使用DataRow.Item属性,如下所示
dr["userid"]
答案 1 :(得分:0)
这很简单。数据行(dr)中的整数列将通过以下方式访问:
int someVal = (int)dr["ColumnName"];
答案 2 :(得分:0)
首先,你的foreach错了。你需要循环getData.Tables[0].Rows
。如果有多个表,则需要遍历getData.Tables。
但是,答案是它是一个索引属性。因此,dr["userId"]
会为您提供价值。
foreach (DataRow dr in getData.Tables[0].Rows) {
/ * blah, blah */
writer.WriteAttributeString("userId", dr["userId"]);
}
答案 3 :(得分:0)
你的内心是一个问题。
应该是
if(getData.Tables.Count > 0){
foreach(DataRow dr in getData.Tables[0].Rows){
writer.WriteAttributeString("userid", dr["UserID"]);
}
}
答案 4 :(得分:0)
您将要添加迭代级别 - 您当前正在迭代foreach(DataRow dr in getData.Tables)
中的表,DataRow对象低于一级。