Tek-Tips is the largest IT community on the Internet today!

Members share and learn making Tek-Tips Forums the best source of peer-reviewed technical information on the Internet!

  • Congratulations strongm on being selected by the Tek-Tips community for having the most helpful posts in the forums last week. Way to Go!

Need help on populating the data dynamically

Status
Not open for further replies.

amorous

Programmer
Sep 5, 2003
1,008
US
Hi Guys,

I am totally new to Asp.net and c#. I came across these below two files using which we can create a bar chart with static data...i was just trying to manipulate the code so that i can insert the data dynamically...


file 1:
Code:
<script language="C#" runat="server"> 
private String _sXAxisTitle; 
private String _sChartTitle; 
private Int32 _iUserWidth = 300; 
private String [] _sYAxisItems; 
private Int32 [] _iYAxisValues; 

public Int32 UserWidth { 
get { return _iUserWidth; } 
set { _iUserWidth = value; } 
} 

public Int32 [] YAxisValues { 
get { return _iYAxisValues; } 
set { _iYAxisValues = value; } 
} 

public String [] YAxisItems { 
get { return _sYAxisItems; } 
set { _sYAxisItems = value; } 
} 

public String XAxisTitle { 
get { return _sXAxisTitle; } 
set { _sXAxisTitle = value; } 
} 

public String ChartTitle { 
get { return _sChartTitle; } 
set { _sChartTitle = value; } 
} 

void Page_Load(Object sender, EventArgs e) { 

// As long as we have values to display, do so 
if (_iYAxisValues!= null) { 

// Color array 
String [] sColor = new String[9]; 
sColor[0] = "red"; 
sColor[1] = "lightblue"; 
sColor[2] = "green"; 
sColor[3] = "orange"; 
sColor[4] = "yellow"; 
sColor[5] = "blue"; 
sColor[6] = "lightgrey"; 
sColor[7] = "pink"; 
sColor[8] = "purple"; 

// Initialize the color category 
Int32 iColor = 0; 

// Display the chart title 
lblChartTitle.Text = _sChartTitle; 

// Get the largest value from the available items 
Int32 iMaxVal = 0; 
for (int i = 0; i < _iYAxisValues.Length; i++) { 
if (_iYAxisValues[i] > iMaxVal) 
iMaxVal = _iYAxisValues[i]; 
} 

// Take the user-provided maximum width of the chart, and divide it by the 
// largest value in our valueset to obtain the modifier 
Int32 iMod = Math.Abs(_iUserWidth/iMaxVal); 

// This will be the string holder for our actual bars. 
String sOut = ""; 

// Render a bar for each item 
for (int i = 0; i < _iYAxisValues.Length; i++) { 

// Only display this item if we have a value to display 
if (_iYAxisValues[i] > 0) { 

sOut += "<tr><td align=right>" + _sYAxisItems[i] + "</td>"; 
sOut += "<td>" + RenderItem(_iYAxisValues[i], iMod, sColor[iColor]) + "</td></tr>"; 
iColor++; 

// If we have reached the end of our color array, start over 
if (iColor >iColor = 0; 
} 
} 

// Place the rendered string in the appropriate label 
lblItems.Text = sOut; 

// Drop in the Y Axis label 
lblXAxisTitle.Text = _sXAxisTitle; 
} 
} 

// Generates a horizontal bar graph for a given item 
private String RenderItem (Int32 iVal, Int32 iMod, String sColor) { 
String sRet = ""; 
sRet += "<table border=0 bgcolor=" + sColor + " cellpadding=0 cellspacing=0><tr>"; 
sRet += "<td align=center width=" + (iVal * iMod) + " nobr nowrap>"; 
sRet += "" + iVal + ""; 
sRet += "</tr><td></table>"; 
return sRet; 
} 

</script> 

<table> 
<tr> 
<td align=center> 
<asp:Label id=lblChartTitle runat=server /> 
</td> 
</tr> 
<tr> 
<td> 
<table border=1 bordercolor='#777777' cellspacing=0 cellpadding=0> 
<tr> 
<td> 
<table> 
<asp:Label id=lblItems runat=server /> 
</table> 
</td> 
</tr> 
</table> 
</td> 
</tr> 
<tr> 
<td colspan=2 align=center> 
<asp:Label id=lblXAxisTitle runat=server /> 
</td> 
</tr> 
</table>


File 2:

Code:
<%@ Register TagPrefix="DNG" TagName="DotNetGraph" Src="DotNetGraph.ascx" %> 

<script language="C#" runat="server"> 

void Page_Load(Object sender, EventArgs e) { 

// Declare our variables 
String [] sItems = new String[10]; 
Int32 [] iValue = new Int32 [10]; 

// Populate our variables 
sItems[0] = "Carrots"; 
iValue[0] = 23; 

sItems[1] = "Peas"; 
iValue[1] = 53; 

sItems[2] = "Celery"; 
iValue[2] = 11; 

sItems[3] = "Onions"; 
iValue[3] = 21; 

sItems[4] = "Radishes"; 
iValue[4] = 43; 

// Set our axis values 
dngchart.YAxisValues = iValue; 

// Set our axis strings 
dngchart.YAxisItems = sItems; 

// Provide a title 
dngchart.ChartTitle = "Inventory Breakdown:"; 

// Provide an title for the X-Axis 
dngchart.XAxisTitle = "(units display actual numbers)"; 

} 

</script> 

<html> 
<body> 
<!-- Note UserWidth is set "in-line". It could just as easily been set on the page_load method. --> 
<DNG:DotNetGraph id=dngchart UserWidth=200 runat=server /> 
</body> 
</html>

Can you help me modify this code....

Thanks in advance

-VJ

I tried to make some changes in the file 2 to populate the data dynamically but was not successful...

I tried the following:

Code:
Dim connString As String = "Data Source = STJSQL\STJDB; Database=STJData;User ID=XXXX;Password=XXXXX" 
Dim sql As String = "SELECT t.Description as InventName, SUM(CASE WHEN m.Active_Ind =1 THEN 1 ELSE 0 END) as itemtotal FROM Inventory_Main m join Inventory_Type t on m.Inventory_Type_ID=t.Inventory_Type_ID GROUP BY m.Inventory_Type_ID, t.Description ORDER BY t.Description ASC " 

Dim conn As SqlConnection = New SqlConnection(connString) 
Dim command AS SqlCommand = New SqlCommand(sql, conn) 

conn.Open() 

Dim ReaderObj As SQlDataReader = Command.ExecuteReader() 

If ReaderObj.Read Then 
Dim i As Integer 
For i = 0 to ReaderObj.FieldCount - 1 
sItems(i) = ReaderObj.InventName(i) 
iValue(i) = ReaderObj.itemtotal(i) 
Next 
End If 

ReaderObj.Close() 
conn.Close() 


void Page_Load(Object sender, EventArgs e) { 

// Set our axis strings 

Dont know how to set these values... 

dngchart.YAxisValues = ?????? 
dngchart.YAxisItems = ??????? 

// Provide a title 
dngchart.ChartTitle = "Inventory Breakdown:"; 

// Provide an title for the X-Axis 
dngchart.XAxisTitle = "(units display actual numbers)"; 

}
 
Amorous,

The first thing that I noticed is that the changes you tried to make are writen in vb.net, the rest of the code is c#.

Your changes should look like:
Code:
string connString = @"Data Source = STJSQL\STJDB; Database=STJData; User ID=XXXX; Password=XXXXX" ;

if (ReaderObj.Read) {
int i;
for (i=0 to ReaderObj.FieldCount - 1; i<= ; i++) {
sItem(i) = ReaderObj.InventName(i) ;
iValue(i) = ReaderObj.itemtotal(i) ;
}
}
ReaderObj.Close() ;
conn.Close();

My C# is bad, but it should look something like that.
You also need to put that code inside the page_load event of your code.

I belive the variables for the graph are set up in an array and the code in file 2 sets those variables.

Let me know what else you need help with and I will try,

Chris
 
Thanks Chris:

Here is how my code looks...and you are correct that variables for the graph are set up in an array and the code in file 2 sets those variables.

void Page_Load(Object Sender, EventArgs e) {

SqlConnection conn = new SqlConnection();
conn.ConnectionString = "Data Source=STJSQL\\STJDB;" +
"Database=STJData;" +
"User ID=XXX;" +
"Password=XXXX";

conn.Open();
string sql= "SELECT t.Description as InventName, SUM(CASE WHEN m.Active_Ind =1 THEN 1 ELSE 0 END) as itemtotal FROM Inventory_Main m join Inventory_Type t on m.Inventory_Type_ID=t.Inventory_Type_ID GROUP BY m.Inventory_Type_ID, t.Description ORDER BY t.Description ASC ";

SqlCommand objcommand= new SqlCommand(sql,conn);
SqlDataReader ReaderObj= objcommand.ExecuteReader();

if (ReaderObj.Read) {
int i;
for (i=0 to ReaderObj.FieldCount - 1; i<=???? ; i++) i think something is missing here and i get "; expected" error on this line
{
sItem(i) = ReaderObj.InventName(i) ;
iValue(i) = ReaderObj.itemtotal(i) ;
}
}

ReaderObj.Close();
conn.Close();
// Provide a title
dngchart.ChartTitle = "<b>Inventory Breakdown:</b>";

// Provide an title for the X-Axis
dngchart.XAxisTitle = "(units display actual numbers)";
}

Any suggestions...

-VJ
 
Status
Not open for further replies.

Part and Inventory Search

Sponsor

Back
Top