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

发布于 2024-07-15 19:39:47 字数 1246 浏览 13 评论 0原文

因此,我使用 XmlWriterDataSet 构建一些 XML,但是当需要循环 DataSet< 中的每个 DataRow 时, /code> 我无法弄清楚如何像“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();
}

So I am building some XML using a XmlWriter and a DataSet but when it comes time to loop through each DataRow in the DataSet I can't figure out how do reference like "userid" and such that come back from the stored procedure. In page code I see them doing it as Eval("userid") or whatever which I am using the same stored procedure, but I am using it in an ASHX now... see the 'WHAT GOES HERE??' in the code below...

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();
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

划一舟意中人 2024-07-22 19:39:47

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

First off, your foreach is wrong. You need to loop over getData.Tables[0].Rows. If there's more than 1 table, you need to loop over getData.Tables.

But, the answer is it's an indexed property. So, dr["userId"] will get you the value.

foreach (DataRow dr in getData.Tables[0].Rows) {
   / * blah, blah */
   writer.WriteAttributeString("userId", dr["userId"]);
}
余厌 2024-07-22 19:39:47

这非常简单。 数据行 (dr) 中的整数列可通过以下方式访问:

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

It is pretty straightforward. An integer column in your datarow (dr) would be accessed with:

int someVal = (int)dr["ColumnName"];
ペ泪落弦音 2024-07-22 19:39:47

你内心的 foreach 就是问题所在。

应该

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

Your inner foreach is the issue.

Should be

if(getData.Tables.Count > 0){
   foreach(DataRow dr in getData.Tables[0].Rows){
      writer.WriteAttributeString("userid", dr["UserID"]);
   }
}
行雁书 2024-07-22 19:39:47

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

You're going to want to add an iteration level - you're currently iterating over Tables in your foreach(DataRow dr in getData.Tables), the DataRow objects are one level below.

自控 2024-07-22 19:39:47

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

dr["userid"]

Try using the DataRow.Item Property as shown below

dr["userid"]
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文