كيف يمكنني الرجوع إلى عنصر DataRow بالاسم في مجموعة البيانات التي تم استردادها من SQL؟
سؤال
وهكذا أنا على بناء بعض XML باستخدام XmlWriter
وDataSet
ولكن عندما يحين الوقت لحلقة من خلال كل DataRow
في DataSet
أنا لا يمكن معرفة كيف المرجعية مثل "حاليا" و ان هذه العودة من الإجراء المخزن . في التعليمات البرمجية الصفحة أراها القيام به على النحو 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"]);
}
نصائح أخرى
ومن اليسير جدا. سيتم الوصول إليها عمود صحيح في datarow الخاص بك (الدكتور) بما يلي:
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 هي مستوى واحد أدناه
وحاول استخدام DataRow.Item أ > عقار كما هو مبين أدناه
dr["userid"]