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 TouchToneTommy on being selected by the Tek-Tips community for having the most helpful posts in the forums last week. Way to Go!

C# populating array--- refined

Status
Not open for further replies.

amorous

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

I think i am successful in populating the two arrays i wanted in file 1 but i am using these two arrays in another file 2 to draw a bar chart....
and not sure how to pass these values....

below is the code:
*************************************
file 1: populating data
*************************************
Code:
<%@ Register TagPrefix="DNG" TagName="DotNetGraph" Src="DotNetGraph.ascx" %>

<%@ Import Namespace="System"%>
<%@ Import Namespace="System"%>
<%@ Import Namespace="System.Collections"%>
<%@ Import Namespace="System.Data"%>
<%@ Import Namespace="System.Data.SqlClient"%>
<%@ Import Namespace="System.Drawing"%>

<script language="C#" runat="server">
int i=0;
   
   void Page_Load(Object Sender, EventArgs e) {             
    
SqlConnection conn = new SqlConnection();
conn.ConnectionString = @"Data Source=STJSQL\STJDB;" +
                            "Database=STJData;" +
                            "User ID=XXXXX;" +
                            "Password=XXXX";

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);
SqlDataAdapter objDA = new SqlDataAdapter(objcommand);

conn.Open();

 DataSet objDS = new DataSet("Inventory_Main,Inventory_Type");
    objDA.Fill(objDS, "Inventory_Main,Inventory_Type");
 
ArrayList sItems = new ArrayList();
ArrayList iValue = new ArrayList();

foreach(DataRow row in objDS.Tables[0].Rows)
        {
          ListItem listitem = new ListItem();
          ListItem itemvalue = new ListItem();

          listitem.Text= row["InventName"].ToString();
          itemvalue.Value = row["itemtotal"].ToString();
          
          sItems.Add(listitem);
          iValue.Add(itemvalue);
          i++;
        }

// Set our axis values
        dngchart.YAxisValues = iValue; <------trying to pass values but getting type cast error
        
        // Set our axis strings
        dngchart.YAxisItems  = sItems; <---same error here   
                    
 // Provide a title
        dngchart.ChartTitle  = "<b>Inventory Breakdown:</b>";
        
        // Provide an title for the X-Axis
        dngchart.XAxisTitle  = "(units display actual numbers)";   

 }
    
</script>

<html>
<body>
<DNG:DotNetGraph id=dngchart UserWidth=200 runat=server />
</body>
</html>
*************************************
file 2: drawing a simple bar chart
*************************************
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 > 8) iColor = 0;
                }
            }
            
            // Place the rendered string in the appropriate label
            lblItems.Text = sOut;
            
            // Drop in the Y Axis label
            lblXAxisTitle.Text = _sXAxisTitle;
        }
    }

  
    private String RenderItem (Int32 iVal, Int32 iMod, String sColor) {
StringBuilder sb = new StringBuilder();
sb.Append("<table border=0 bgcolor=" + sColor + " cellpadding=0 cellspacing=0><tr>");
sb.Append("<td align=center width=" + (iVal * iMod) + " nobr nowrap>");
sb.Append("<b>" + iVal + "</b>");
sb.Append("</tr><td></table>");
return sb.ToString();
}

        
</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>

What changes do i do in the second file....

thanks in advance

-VJ

 
VJ,
I'm sorry I don't have an answer to your question. I will give you a little tip, though. When you have additional questions related to a thread, don't create a new thread. Simply, post the new question as a reply to the original thread because it is easier to follow up this way.

Also, to get the best responses to your questions, you might want to read FAQ222-2244.

JC

_________________________________________________
To get the best response to a question, read faq222-2244!
 
Thanks JC...I will try to following the direction in the FAQ you mentioned...

-VJ
 
Please ignore this post....

I got it working...

Thanks

-VJ
 
Status
Not open for further replies.

Part and Inventory Search

Sponsor

Back
Top