如何在从SQL检索的DataSet中按名称引用DataRow元素?

时间:2009-03-23 20:36:49

标签: asp.net dataset datarow

所以我使用XmlWriterDataSet构建了一些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();
}

5 个答案:

答案 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对象低于一级。