C# xml和转发器
我必须使用XPath链接我的XML文档吗 到中继器还是有其他方法 这是我的一些代码 第一页循环浏览数据并存储为XML:C# xml和转发器,c#,asp.net,xml,C#,Asp.net,Xml,我必须使用XPath链接我的XML文档吗 到中继器还是有其他方法 这是我的一些代码 第一页循环浏览数据并存储为XML: public virtual void Button_Click(object sender, EventArgs args) { TableControl recControls = (TableControl)this.Page.FindControlRecursively("TableControl");
public virtual void Button_Click(object sender, EventArgs args)
{
TableControl recControls = (TableControl)this.Page.FindControlRecursively("TableControl");
if (recControls != null)
{
TableControlRow[] rows = recControls.GetSelectedRecordControls();
this.Page.Session["RegistrationTableControl"] = rows;
// create XML writer to
using(System.Xml.XmlWriter writer = System.Xml.XmlWriter.Create(@"c:\temp\reg.xml"))
{
XmlWriterSettings settings = new XmlWriterSettings();
settings.OmitXmlDeclaration = true;
settings.ConformanceLevel = ConformanceLevel.Fragment;
settings.CloseOutput = false;
writer.WriteStartDocument();
writer.WriteStartElement("SubContractors");
foreach(TableControlRow rec in rows)
{
writer.WriteElementString("SubContrator1", rec.BUSINESSNAME.Text);
writer.WriteElementString("SubContactName1", rec.OWNERNAME.Text);
writer.WriteElementString("SubAddress1", rec.ADDRESS.Text);
writer.WriteElementString("SubCity1", rec.CITY.Text);
writer.WriteElementString("SubState1", rec.STATE.Text);
writer.WriteElementString("SubZipCode1", rec.ZIPCODE.Text);
writer.WriteElementString("SubPhone1", rec.PHONE.Text);
writer.WriteElementString("SubFax1", rec.FAX.Text);
writer.WriteElementString("SubEmail1", rec.EMAIL.Text);
writer.WriteElementString("Status1", "Please enter information");
writer.WriteElementString("Referral", "1");
}
writer.WriteEndElement();
writer.WriteEndDocument();
}
}}
它创建了我的xml文档
第2页代码:我需要获取新创建的XML文档中的数据,然后
使用此代码填充我的表格控制中继器工作
第2页
public override void DataBind()
{
base.DataBind();
// Make sure that the DataSource is initialized.
if (this.DataSource == null)
{
return;
}
// Setup the pagination controls.
BindPaginationControls();
// Populate all filters data.
// Bind the repeater with the list of records to expand the UI.
System.Web.UI.WebControls.Repeater rep = (System.Web.UI.WebControls.Repeater)(this.FindControl("TableControlRepeater"));
rep.DataSource = this.DataSource;
rep.DataBind();
int index = 0;
foreach (System.Web.UI.WebControls.RepeaterItem repItem in rep.Items)
{
// Make sure that the DataSource is initialized.
// Loop through all rows in the table, set its DataSource and call DataBind().
TableControlRow recControl = (TableControlRow)(repItem.FindControl("TableControlRow"));
recControl.DataSource = this.DataSource[index];
recControl.DataBind();
recControl.Visible = !this.InDeletedRecordIds(recControl);
index += 1;
}
}
我已经获取了XML数据,并将它们放在第2页,成为中继器的数据源
任何帮助或建议都是非常有用的。我真的不需要重写代码。我使用
查询XML文档要容易得多。LINQ To XML可能是完成此任务最简单的方法。看看斯科特·顾在上面 伪代码:
var xml = XDocument.Load(...);
reapeater.DataSource = from x in xml.Descendents("z")
where x.Attributes("y").Equals("select value")
select new { Value1 = x.Element("Value1"), Value2 = x.Element("Value2") };
repeater.DataBind();
是您将所有内容转换为XML(也是手动转换),然后再重新阅读,这是有原因的吗?问题(“z”)是,您必须根据XML输出来处理它;但是,根据您更新的代码,我可能建议使用XML序列化,因为它将是完全自动的。