I need some assitance from a ASP guru out there..... I had a working resource in 9.5x that showed me current down devices and time it went down and duration. It worked very well but in version 10.x when I click on the edit button I get an error and need to see what needs to be tweaked.
The working resource looks like this:
But when I hit the Edit button I see this error:
I also see the error on a custom page which lists nodes by their name suffices. It seems that the code for the edit function changed and I am not sure how to get around it.
The code for the resource I am using is:
<%@ Control Language="C#" ClassName="Outages" Inherits="SolarWinds.Orion.Web.UI.BaseResourceControl" %>
<%@ Import Namespace="System.Data.SqlClient"%>
<%@ Import Namespace="SolarWinds.Orion.Common"%>
<%@ Import Namespace="SolarWinds.Orion.Web.DAL"%>
<%@ Import Namespace="System.Data"%>
<%@ Register TagPrefix="orion" Namespace="SolarWinds.Orion.Web.Controls" %>
<script runat="server">
protected void Page_Load(object sender, EventArgs e)
{
string filter = this.Resource.Properties["Filter"];
DataTable table;
try
{
string sql = @"
SELECT Nodes.NodeID, Nodes.Caption, Nodes.StatusDescription, Nodes.GroupStatus, Nodes.StatusLED,
Nodes.IP_Address, Nodes.DNS, Nodes.SysName, Nodes.status_info, WebCommunityStrings.GUID,
MAX(E.EventTime) AS DownTime,
Cast(DateDiff(day,MAX(E.EventTime),getdate()) as varchar) + ' Day(s) ' + convert(char(8),dateadd(second,DateDiff(second,MAX(E.EventTime),getdate()),0),14) as Duration, Nodes.Department
FROM Nodes
INNER JOIN Events E ON E.NetworkNode = Nodes.NodeID
LEFT OUTER JOIN WebCommunityStrings ON WebCommunityStrings.CommunityString = Nodes.Community
WHERE Nodes.status = 2 {0}
GROUP BY Nodes.StatusLED, Nodes.Caption, Nodes.Department, Nodes.NodeID, Nodes.StatusDescription, Nodes.GroupStatus, Nodes.IP_Address, Nodes.DNS, Nodes.SysName, Nodes.status_info, WebCommunityStrings.GUID
ORDER BY Nodes.Caption
";
if (!String.IsNullOrEmpty(filter))
sql = string.Format(sql, "AND " + filter.Replace('*', '%').Replace('?', '_'));
else
sql = string.Format(sql, "");
using (SqlCommand cmd = SqlHelper.GetTextCommand(Limitation.LimitSQL(sql)))
{
table = SqlHelper.ExecuteDataTable(cmd);
}
}
catch (SqlException)
{
this.SQLErrorPanel.Visible = true;
return;
}
this.downNodesTable.DataSource = table;
this.downNodesTable.DataBind();
}
protected override string DefaultTitle
{
get { return "Current Down Devices and Status"; }
}
public override string HelpLinkFragment
{
get { return "OrionPHResourceDownNodes"; }
}
public override string EditURL
{
get
{
string url = String.Format("/Orion/NetPerfMon/Resources/FilterEdit.aspx?ResourceID={0}&ViewID={1}&HideInterfaceFilter=True",
this.Resource.ID, this.Resource.View.ViewID);
if (!String.IsNullOrEmpty(this.Request.QueryString["NetObject"]))
{
url += "&NetObject=" + this.Request.QueryString["NetObject"];
}
return url;
}
}
public override string SubTitle
{
get
{
string subTitle = base.SubTitle;
if (String.IsNullOrEmpty(subTitle))
{
return "The Following Nodes are not Responding";
}
return subTitle;
}
}
</script>
<orion:resourceWrapper runat="server" ID="wrapper">
<Content>
<asp:Panel ID="SQLErrorPanel" runat="server" Visible="false">
<table cellpadding="10px">
<tr>
<td style="font-weight: bold; font-size: small; color: Red">
Custom SQL filter is incorrectly formated.
</td>
</tr>
</table>
</asp:Panel>
<asp:Repeater runat="server" ID="downNodesTable">
<HeaderTemplate>
<table border="0" cellpadding="2" cellspacing="0" width="100%">
<tr>
<th class="ReportHeader" colspan="2">DEVICE</th>
<th class="ReportHeader">LAST CHANGE</th>
<th class="ReportHeader">DURATION</th>
<th class="ReportHeader">DEPARTMENT</th>
<th class="ReportHeader">COMMENTS</th>
</tr>
</HeaderTemplate>
<ItemTemplate>
<tr>
<td class="Property" valign="middle" width="20">
<img alt="Status" src='/Orion/images/StatusIcons/Small-<%# Eval("StatusLED").ToString().Trim() %>' />
</td>
<td class="Property">
<orion:ToolsetLink ID="ToolsetLink1" runat="server" IPAddress='<%# Eval("IP_Address") %>' DNS='<%# Eval("DNS") %>' SysName='<%# Eval("SysName") %>' CommunityGUID='<%# Eval("GUID") %>' NodeID='<%# Eval("NodeID") %>' ToolTip='<%# Eval("StatusDescription") %>'>
<%# Eval("Caption") %>
</orion:ToolsetLink>
</td>
<td class="Property"><%# Eval("Downtime") %></td>
<td class="Property"><%# Eval("Duration") %></td>
<td class="Property"><%# Eval("Department") %></td>
<td class="Property"><%# Eval("Status_Info") %></td>
</tr>
</ItemTemplate>
<FooterTemplate>
</table>
</FooterTemplate>
</asp:Repeater>
</Content>
</orion:resourceWrapper>