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!

Populating arrays

Status
Not open for further replies.

amorous

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

I am trying to populate two arrays with data from database but without success...can someone shed more light on this....

I dont get any errors but i am not sure whether the arrays are being populated or not

Code:
<%@ 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=XXXX;" +
                            "Password=XXXXXX";

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();

[b]DataSet objDS = new DataSet("Inventory_Main");
objDA.Fill(objDS, "Inventory_Main");
[/b]
 
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();
          [b]itemvalue.Value = row["itemtotal"].ToString();[/b]

          sItems.Add(listitem);
          iValue.Add(itemvalue);
          i++;
        }
 }
    
</script>

Ok here are my other two question on the bolded parts of the code....

if we have a query like

Select * from employees

then we say

DataSet objDS = new DataSet("employees");
objDA.Fill(objDS, "employees");

but for my query which has more than one table how do i write the DataSet("????")

and the other thing

i want itemtotal to be integer how can i cast to it to integer value??

thanks in advance....
-VJ


 
Ok guys...

before anybody can suggest me something...

i did a response.write in the for loop

Response.Write(listitem);
Response.Write(itemvalue);

it showed me the exact values...

but i am trying to use these two arrays to display a bar chart....

here is my other file
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>

Now as i am sure that my arrays are populated correctly..how do i refer these arrays in the file two so that i can draw a bar chart??

-VJ
 
Please ignore this post....I think i messed up...

I will post it again in a new thread...

Sorry

-VJ
 
Status
Not open for further replies.

Part and Inventory Search

Sponsor

Back
Top