fwsteal
asked on
bind event log source to dropdown list asp.net 2.0 c#
how does one go about binding an event log source to dropdown list asp.net 2.0 c#
<asp:DropDownList id="ddl" runat="server" AutoPostBack="True">
<asp:ListItem Selected="true">Select a Source</asp:ListItem>
</asp:DropDownList>
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
//ddl
EventLog log = new EventLog(txtLog.Text);
foreach (EventLogEntry entry in log.Source)
{
ddl.Items.Add(log);
ddl.DataBind();
}
}
}
protected void ddl_SelectedIndexChanged(o bject sender, EventArgs e)
{
//fill the panel's label with the ddl selected
lblResult.Text = txtLogName.Text + "<br/>" + ddl.SelectedItem.Text;
}
<asp:DropDownList id="ddl" runat="server" AutoPostBack="True">
<asp:ListItem Selected="true">Select a Source</asp:ListItem>
</asp:DropDownList>
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
//ddl
EventLog log = new EventLog(txtLog.Text);
foreach (EventLogEntry entry in log.Source)
{
ddl.Items.Add(log);
ddl.DataBind();
}
}
}
protected void ddl_SelectedIndexChanged(o
{
//fill the panel's label with the ddl selected
lblResult.Text = txtLogName.Text + "<br/>" + ddl.SelectedItem.Text;
}
ASKER
I did this:
EventLog evnLog = new EventLog(LabelLogName.Text );
foreach (EventLogEntry entry in evnLog.Entries)
{
ListItem item = new ListItem(entry.Source.ToSt ring()); //need distinct list
ddl.Items.Add(item);
}
how would I get a distinct list?
I also have a <asp:ListItem Selected="True">Select a Source</asp:ListItem> but don't want to be able to select it.
EventLog evnLog = new EventLog(LabelLogName.Text
foreach (EventLogEntry entry in evnLog.Entries)
{
ListItem item = new ListItem(entry.Source.ToSt
ddl.Items.Add(item);
}
how would I get a distinct list?
I also have a <asp:ListItem Selected="True">Select a Source</asp:ListItem> but don't want to be able to select it.
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
Error 1 Expected class, delegate, enum, interface, or struct
on private bool function
on private bool function
Post your source code
ASKER
sorry my error; noticed that after selecting one of the data values, the negative index is allowed to be selected
ASKER
here is one of the data values:
BApp.Button1_Click
I've got this, but it doesn't work:
protected void ddl_SelectedIndexChanged(o bject sender, EventArgs e)
{
lblResult.Text = LabelLogName.Text + "<br />" + ddl.SelectedItem.Text + "<br />"; //BApp.Button1_Click
//display entries per the data value selected
System.Text.StringBuilder sb = new System.Text.StringBuilder( );
EventLog log = new EventLog(LabelLogName.Text );
foreach (EventLogEntry entry in log.Entries)
{
sb.Append("<b>Entry Type:</b> ");
sb.Append(entry.EntryType. ToString() );
sb.Append("<br /><b>Message:</b> ");
sb.Append(entry.Message);
sb.Append("<br /><b>Time Generated:</b> ");
sb.Append(entry.TimeGenera ted);
sb.Append("<br /><br />");
}
lblResult.Text = sb.ToString();
}
I can get it to display all the entries, but not the specific entries per the selected item. Any ideas?
BApp.Button1_Click
I've got this, but it doesn't work:
protected void ddl_SelectedIndexChanged(o
{
lblResult.Text = LabelLogName.Text + "<br />" + ddl.SelectedItem.Text + "<br />"; //BApp.Button1_Click
//display entries per the data value selected
System.Text.StringBuilder sb = new System.Text.StringBuilder(
EventLog log = new EventLog(LabelLogName.Text
foreach (EventLogEntry entry in log.Entries)
{
sb.Append("<b>Entry Type:</b> ");
sb.Append(entry.EntryType.
sb.Append("<br /><b>Message:</b> ");
sb.Append(entry.Message);
sb.Append("<br /><b>Time Generated:</b> ");
sb.Append(entry.TimeGenera
sb.Append("<br /><br />");
}
lblResult.Text = sb.ToString();
}
I can get it to display all the entries, but not the specific entries per the selected item. Any ideas?
You could do something like the following, and honestly, I think I've answered your first initial question.
public partial class _Default : System.Web.UI.Page
{
DataView dataView = new DataView();
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
EventLog evnLog = new EventLog("System");
EventLogEntryCollection entriesCollection = evnLog.Entries;
DataTable table = new DataTable("events");
DataTable result = new DataTable("distinct");
DataColumn colItem = new DataColumn("source", typeof(System.String));
table.Columns.Add(colItem) ;
DataRow newRow;
foreach (EventLogEntry entry in evnLog.Entries)
{
newRow = table.NewRow();
newRow["source"] = entry.Source.ToString();
table.Rows.Add(newRow);
}
table.AcceptChanges();
// DataTable dt = new DataTable(TableName);
result.Columns.Add("source ", table.Columns["source"].Da taType);
object LastValue = null;
foreach (DataRow dr in table.Select("", "source"))
{
if (LastValue == null || !(ColumnEqual(LastValue, dr["source"])))
{
LastValue = dr["source"];
result.Rows.Add(new object[] { LastValue });
}
}
dataView.Table = table;
ddl.DataSource = result;
ddl.DataTextField = "source";
ddl.DataBind();
//ListItem item = new ListItem(entry.Source, entry.InstanceId.ToString( ));
//ddl.Items.Add(item);
ListItem firstItem = new ListItem("Select a Source");
ddl.Items.Insert(0, firstItem);
ddl.SelectedIndex = -1;
}
}
private bool ColumnEqual(object A, object B)
{
if (A == DBNull.Value && B == DBNull.Value) // both are DBNull.Value
return true;
if (A == DBNull.Value || B == DBNull.Value) // only one is DBNull.Value
return false;
return (A.Equals(B)); // value type standard comparison
}
protected void ddl_SelectedIndexChanged(o bject sender, EventArgs e)
{
dataView.RowFilter = "source = '" + ddl.SelectedItem.Text + "'";
}
}
public partial class _Default : System.Web.UI.Page
{
DataView dataView = new DataView();
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
EventLog evnLog = new EventLog("System");
EventLogEntryCollection entriesCollection = evnLog.Entries;
DataTable table = new DataTable("events");
DataTable result = new DataTable("distinct");
DataColumn colItem = new DataColumn("source", typeof(System.String));
table.Columns.Add(colItem)
DataRow newRow;
foreach (EventLogEntry entry in evnLog.Entries)
{
newRow = table.NewRow();
newRow["source"] = entry.Source.ToString();
table.Rows.Add(newRow);
}
table.AcceptChanges();
// DataTable dt = new DataTable(TableName);
result.Columns.Add("source
object LastValue = null;
foreach (DataRow dr in table.Select("", "source"))
{
if (LastValue == null || !(ColumnEqual(LastValue, dr["source"])))
{
LastValue = dr["source"];
result.Rows.Add(new object[] { LastValue });
}
}
dataView.Table = table;
ddl.DataSource = result;
ddl.DataTextField = "source";
ddl.DataBind();
//ListItem item = new ListItem(entry.Source, entry.InstanceId.ToString(
//ddl.Items.Add(item);
ListItem firstItem = new ListItem("Select a Source");
ddl.Items.Insert(0, firstItem);
ddl.SelectedIndex = -1;
}
}
private bool ColumnEqual(object A, object B)
{
if (A == DBNull.Value && B == DBNull.Value) // both are DBNull.Value
return true;
if (A == DBNull.Value || B == DBNull.Value) // only one is DBNull.Value
return false;
return (A.Equals(B)); // value type standard comparison
}
protected void ddl_SelectedIndexChanged(o
{
dataView.RowFilter = "source = '" + ddl.SelectedItem.Text + "'";
}
}
ASKER
I gave the above a try and the select source is still an option to select and populate the result label. Any ideas?
Thanks for the grade.
In a nutshell, rather than displaying events on a label, why dont you use a gridview (or datagrid for ASP.NET 1.1)? Keep all events in a table, then use dataview.RowFilter to select events based on user's selection than display that trimmed down data in your gridview(datagrid)?
In a nutshell, rather than displaying events on a label, why dont you use a gridview (or datagrid for ASP.NET 1.1)? Keep all events in a table, then use dataview.RowFilter to select events based on user's selection than display that trimmed down data in your gridview(datagrid)?
ASKER
You've helped me tremendously; completely new to c#
protected void ddl_SelectedIndexChanged(o bject sender, EventArgs e)
{
//1. get all log entries where they match the source name of ddl.SelectedItem.Text
//2. bind data to GridViewShowEntries
dataView.RowFilter = "source = '" + ddl.SelectedItem.Text + "'";
GridViewShowEntries.DataSo urce = dataView.RowFilter;
GridViewShowEntries.DataBi nd();
//not sure how?
}
protected void ddl_SelectedIndexChanged(o
{
//1. get all log entries where they match the source name of ddl.SelectedItem.Text
//2. bind data to GridViewShowEntries
dataView.RowFilter = "source = '" + ddl.SelectedItem.Text + "'";
GridViewShowEntries.DataSo
GridViewShowEntries.DataBi
//not sure how?
}
Here you go:
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls. WebParts;
using System.Web.UI.HtmlControls ;
using System.Diagnostics;
public partial class _Default : System.Web.UI.Page
{
DataView dataView = new DataView();
DataTable table = new DataTable("events");
DataTable result = new DataTable("distinct");
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
EventLog evnLog = new EventLog("System");
EventLogEntryCollection entriesCollection = evnLog.Entries;
DataColumn colType = new DataColumn("type", typeof(System.String));
DataColumn colTime = new DataColumn("time", typeof(System.String));
DataColumn colItem = new DataColumn("source", typeof(System.String));
DataColumn colCategory = new DataColumn("category", typeof(System.String));
DataColumn colEvent = new DataColumn("event", typeof(System.String));
DataColumn colUser = new DataColumn("user", typeof(System.String));
DataColumn colPC = new DataColumn("computer", typeof(System.String));
table.Columns.Add(colType) ;
table.Columns.Add(colTime) ;
table.Columns.Add(colItem) ;
table.Columns.Add(colCateg ory);
table.Columns.Add(colEvent );
table.Columns.Add(colUser) ;
table.Columns.Add(colPC);
DataRow newRow;
foreach (EventLogEntry entry in evnLog.Entries)
{
newRow = table.NewRow();
newRow["type"] = entry.EntryType.ToString() ;
newRow["time"] = entry.TimeGenerated.ToStri ng();
newRow["source"] = entry.Source.ToString();
newRow["category"] = entry.Category.ToString();
newRow["event"] = entry.InstanceId.ToString( );
newRow["user"] = entry.UserName == null ? string.Empty : entry.UserName.ToString();
newRow["computer"] = entry.MachineName.ToString ();
table.Rows.Add(newRow);
}
table.AcceptChanges();
result.Columns.Add("source ", table.Columns["source"].Da taType);
object LastValue = null;
foreach (DataRow dr in table.Select("", "source"))
{
if (LastValue == null || !(ColumnEqual(LastValue, dr["source"])))
{
LastValue = dr["source"];
result.Rows.Add(new object[] { LastValue });
}
}
dataView.Table = table;
ddl.DataSource = result;
ddl.DataTextField = "source";
ddl.DataBind();
ListItem firstItem = new ListItem("Select a Source");
ddl.Items.Insert(0, firstItem);
ddl.SelectedIndex = -1;
ViewState.Add("dataSource" , table);
}
}
private bool ColumnEqual(object A, object B)
{
if (A == DBNull.Value && B == DBNull.Value) // both are DBNull.Value
return true;
if (A == DBNull.Value || B == DBNull.Value) // only one is DBNull.Value
return false;
return (A.Equals(B)); // value type standard comparison
}
protected void ddl_SelectedIndexChanged(o bject sender, EventArgs e)
{
dataView.Table = ViewState["dataSource"] as DataTable;
dataView.RowFilter = "source = '" + ddl.SelectedItem.Text + "'";
GridView1.DataSource = dataView.ToTable();
GridView1.DataBind();
}
}
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.
using System.Web.UI.HtmlControls
using System.Diagnostics;
public partial class _Default : System.Web.UI.Page
{
DataView dataView = new DataView();
DataTable table = new DataTable("events");
DataTable result = new DataTable("distinct");
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
EventLog evnLog = new EventLog("System");
EventLogEntryCollection entriesCollection = evnLog.Entries;
DataColumn colType = new DataColumn("type", typeof(System.String));
DataColumn colTime = new DataColumn("time", typeof(System.String));
DataColumn colItem = new DataColumn("source", typeof(System.String));
DataColumn colCategory = new DataColumn("category", typeof(System.String));
DataColumn colEvent = new DataColumn("event", typeof(System.String));
DataColumn colUser = new DataColumn("user", typeof(System.String));
DataColumn colPC = new DataColumn("computer", typeof(System.String));
table.Columns.Add(colType)
table.Columns.Add(colTime)
table.Columns.Add(colItem)
table.Columns.Add(colCateg
table.Columns.Add(colEvent
table.Columns.Add(colUser)
table.Columns.Add(colPC);
DataRow newRow;
foreach (EventLogEntry entry in evnLog.Entries)
{
newRow = table.NewRow();
newRow["type"] = entry.EntryType.ToString()
newRow["time"] = entry.TimeGenerated.ToStri
newRow["source"] = entry.Source.ToString();
newRow["category"] = entry.Category.ToString();
newRow["event"] = entry.InstanceId.ToString(
newRow["user"] = entry.UserName == null ? string.Empty : entry.UserName.ToString();
newRow["computer"] = entry.MachineName.ToString
table.Rows.Add(newRow);
}
table.AcceptChanges();
result.Columns.Add("source
object LastValue = null;
foreach (DataRow dr in table.Select("", "source"))
{
if (LastValue == null || !(ColumnEqual(LastValue, dr["source"])))
{
LastValue = dr["source"];
result.Rows.Add(new object[] { LastValue });
}
}
dataView.Table = table;
ddl.DataSource = result;
ddl.DataTextField = "source";
ddl.DataBind();
ListItem firstItem = new ListItem("Select a Source");
ddl.Items.Insert(0, firstItem);
ddl.SelectedIndex = -1;
ViewState.Add("dataSource"
}
}
private bool ColumnEqual(object A, object B)
{
if (A == DBNull.Value && B == DBNull.Value) // both are DBNull.Value
return true;
if (A == DBNull.Value || B == DBNull.Value) // only one is DBNull.Value
return false;
return (A.Equals(B)); // value type standard comparison
}
protected void ddl_SelectedIndexChanged(o
{
dataView.Table = ViewState["dataSource"] as DataTable;
dataView.RowFilter = "source = '" + ddl.SelectedItem.Text + "'";
GridView1.DataSource = dataView.ToTable();
GridView1.DataBind();
}
}
EventLog evnLog = new EventLog("System");
foreach (EventLogEntry entry in evnLog.Entries)
{
ListItem item = new ListItem(entry.Message,ent
ddl.Items.Add(item);
}