/// <summary> /// We're about to render the page - search for the soils and write names to the /// response. The iPad soil app uses this method. /// </summary> protected void Page_PreRender(object sender, EventArgs e) { Response.Clear(); Response.ContentType = "text/plain"; Response.ContentEncoding = System.Text.Encoding.UTF8; if (Request.QueryString["Name"] != null) { string SoilName = Request.QueryString["Name"]; ApsoilWeb.Service SoilsDB = new Apsoil.ApsoilWeb.Service(); XmlDocument Doc = new XmlDocument(); Doc.LoadXml(SoilsDB.SoilXML(SoilName)); MemoryStream MemStream = new MemoryStream(10000); Doc.Save(MemStream); if (MemStream.ToArray() != null) { Response.BinaryWrite(MemStream.ToArray()); } } else if (Request.QueryString["NameJSON"] != null) { string SoilName = Request.QueryString["NameJSON"]; ApsoilWeb.Service SoilsDB = new Apsoil.ApsoilWeb.Service(); Response.Write(SoilsDB.SoilAsJson(SoilName)); } Response.End(); }
protected void Page_Load(object sender, EventArgs e) { if (Request.QueryString["Name"] != null) { string FileName = Path.GetFileName(Request.QueryString["Name"]); Response.Clear(); Response.AppendHeader("Content-Disposition", "inline; filename=" + FileName + ".csv"); //Response.AppendHeader("Content-Disposition", "csv; Soils.csv"); Response.Buffer = false; Response.ContentType = "application/vnd.ms-excel"; // text/plain string SoilName = Request.QueryString["Name"]; ApsoilWeb.Service SoilsDB = new Apsoil.ApsoilWeb.Service(); Soil Soil = Soil.Create(SoilsDB.SoilXML(SoilName)); DataTable Data = new DataTable(); SoilDataTable.SoilToTable(Soil, Data); Response.Write(DataTableUtility.DataTableToCSV(Data, 0)); Response.Flush(); // send our content to the client browser. Response.SuppressContent = true; // stops .net from writing it's stuff. } }
/// <summary>User has clicked on show XML button.</summary> /// <param name="sender">The sender.</param> /// <param name="e">The <see cref="EventArgs"/> instance containing the event data.</param> protected void ShowXMLClick(object sender, EventArgs e) { XmlDocument doc = new XmlDocument(); doc.AppendChild(doc.CreateElement("folder")); XmlHelper.SetAttribute(doc.DocumentElement, "name", "Soils"); using (ApsoilWeb.Service soilsDB = new Apsoil.ApsoilWeb.Service()) { foreach (string path in GetSelectedItems()) { XmlDocument localXml = new XmlDocument(); localXml.LoadXml(soilsDB.SoilXML(path)); doc.DocumentElement.AppendChild(doc.ImportNode(localXml.DocumentElement, true)); } } StringWriter writer = new StringWriter(); writer.Write(XmlHelper.FormattedXML(doc.DocumentElement.OuterXml)); ShowString(writer.ToString()); }
/// <summary>Check selected soils and show error messages.</summary> /// <param name="sender"></param> /// <param name="e"></param> protected void OnCheckSoilsClick(object sender, EventArgs e) { string labelText = string.Empty; using (ApsoilWeb.Service soilsDB = new Apsoil.ApsoilWeb.Service()) { foreach (ListItem item in ListBox.Items) { if (item.Selected) { string soilPath = item.Text; Soil soil = Soil.Create(soilsDB.SoilXML(soilPath)); string messages = soil.Check(true); if (messages != string.Empty) { labelText += soilPath + "\r\n"; labelText += messages + "\r\n"; } } } } label3.Text = labelText.Replace("\r\n", "<br/>"); }
/// <summary> /// This is called directly by Google Earth when it wants KML data. /// </summary> private byte[] NetworkLinkData() { kml KmlContent = new kml(); Document KmlDoc = new Document("Test", ""); KmlContent.Documents.Add(KmlDoc); KML_22_Beta1.Style APSRUIcon = new KML_22_Beta1.Style(); APSRUIcon.IconStyle.Icon.Href.Text = "http://apsimdev.apsim.info/ApsoilWeb/shovel.png"; APSRUIcon.IconStyle.Scale.Value = 0.7; APSRUIcon.LabelStyle.Scale.Value = 0.7; APSRUIcon.id = "APSRUIconID"; KmlDoc.StyleSelector.Style.Add(APSRUIcon); Dictionary <string, Folder> Folders = new Dictionary <string, Folder>(); ApsoilWeb.Service SoilsDB = new Apsoil.ApsoilWeb.Service(); foreach (string Name in SoilsDB.AllSoilNames(false)) { string FolderName = Name; if (FolderName.Contains("/")) { FolderName = FolderName.Substring(0, FolderName.LastIndexOf('/')); } Soil Soil = Soil.Create(SoilsDB.SoilXML(Name)); if (Soil != null) { string BalloonDescription = "<p><b>" + Soil.Name + "</b></p><p><i>" + Soil.Comments + "</i></p>"; string DataSourceComments = Soil.DataSource; if (DataSourceComments != null && DataSourceComments != "") { BalloonDescription += "<p><i>Data source: " + DataSourceComments + "</i></p>"; } BalloonDescription += "<img src=\"" + ourPath + "SoilChart.aspx?Name=" + Name + "\"/>"; BalloonDescription += "<p><a href=\"" + ourPath + "GetSoil.aspx?Name=" + Name + "\">Download soil in APSIM format (copy and paste contents to your simulation).</a></p>"; BalloonDescription += "<p><a name=\"link_id\" id=\"link_id\" href=\"Download.html\" onclick=\"window.open('" + ourPath + "Excel.aspx?Name=" + Name + "');\">Download soil as an EXCEL spreadsheet</a></p>"; string SoilName = Soil.Name; if (Soil.ApsoilNumber != "") { SoilName = Soil.ApsoilNumber; } Placemark plmMyPlaceMark = new Placemark(SoilName, BalloonDescription, Soil.Latitude, Soil.Longitude, 0, altitudeModeEnum.clampToGround); plmMyPlaceMark.Description.UseCDATA = true; plmMyPlaceMark.Description.Text = BalloonDescription; plmMyPlaceMark.StyleUrl.Text = "#APSRUIconID"; Folder F = GetFolder(FolderName, Folders, KmlDoc); F.Features.Placemarks.Add(plmMyPlaceMark); } } KmlContent.NetworkLinkControl.Expires.Value = DateTime.Now.AddDays(7); KmlContent.NetworkLinkControl.LinkDescription.Text = "Characterised sites - " + DateTime.Now.ToString("dd MMM yyyy HH:mm:ss"); return(KmlContent.GetKMZ("NetworkData.kml")); }