任何想法为什么我的GetCompanies()函数不起作用?

时间:2009-05-08 18:32:13

标签: asp.net

所有这一切都输出'CHECK',我输入它以确保它实际上是在击中函数...(先调用Proceed()然后调用GetCompanies())。

using System;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Data.SqlClient;
using Mexico.Data;

public partial class admin_tools_Optimus : System.Web.UI.Page
{
    protected int step = 0;
    protected string[] companies = new string[260];
    protected string[,] courses = new string[260,50];
    protected int total = 0;

    protected void Page_Load(object sender, EventArgs e)
    {

    }

    protected void Proceed(object sender, EventArgs e)
    {
        DataSet getCompanies = SqlHelper.ExecuteDataset(ConfigurationManager.ConnectionStrings["connstr"].ConnectionString, CommandType.StoredProcedure, "Companies_All_Get");

        int counter = 0;

        foreach (DataRow dr in getCompanies.Tables[0].Rows)
        {
            lstData.Items.Add(dr["companyid"].ToString() + ": " + dr["companyname"].ToString());
            companies[counter] = dr["companyid"].ToString();
            counter++;
        }
        lblCurrentData.Text = counter.ToString() + " companies ready, click next to get all company courses.";
        total = counter;
        btnNext.Visible = false;
        btnNext1.Visible = true;
    }


    protected void GetCompanies(object sender, EventArgs e)
    {
        Response.Write("CHECK");
        for (int i = 0; i < total; i++)
        {
            DataSet getBundles = SqlHelper.ExecuteDataset(ConfigurationManager.ConnectionStrings["connstr"].ConnectionString, CommandType.StoredProcedure, "CompanyCourses_ByCompanyID_Get_Sav", new SqlParameter("@companyid", companies[i]));

            int counter = 0;

            foreach (DataRow dr in getBundles.Tables[0].Rows)
            {
                courses[i, counter] = dr["bundleid"].ToString();
                counter++;
            }

            string allID = "";

            allID += courses[i, 0];

            for (int ii = 0; ii < counter; ii++)
            {
                allID += "," + courses[i, ii];
            }
            Response.Write(allID + " <br/>");
        }
    }

}

6 个答案:

答案 0 :(得分:3)

看起来你在不同的回发期间调用了这两种方法。如果是这种情况,那么您的公司数组将为空,因为您没有持久化(在会话,视图状态等)。

答案 1 :(得分:1)

您在GetCompanies()内的循环条件在开始时就已满足,并且永远不会执行任何循环。

答案 2 :(得分:0)

每次回发都会重新实例化页面。您在Proceed调用中设置的值仅适用于处理该调用的对象的实例。因此,您再次回发并调用GetCompanies,它再次获得total的初始值 - 0 - 并且不认为有任何工作要做。尝试在会话中保留总数并在调用GetCompanies时从那里检索它。确保GetCompanies在使用后将其从会话中删除,以便在不重置的情况下不会重复使用。

答案 3 :(得分:0)

我可能在这里遗漏了一些东西,但是在设置“total”变量之前调用GetCompanies。所以GetCompanies中的for循环不会循环任何东西,因为“total”仍然设置为0。

答案 4 :(得分:0)

在你的编码方式中你应该改进一些东西,但是第一,没有必要有Response.Write子句,带有断点的调试会告诉你到底是什么问题

首先,停止保护您的全局变量,如果您不想在课堂外公开它们,请将其设为私有。

  

受保护的关键字是成员访问修饰符。受保护的成员可以在声明它的类中访问,也可以从派生自声明该成员的类派生的任何类中访问。

你需要继承这门课吗?我不是这样的。

答案 5 :(得分:-1)

使用调试器。在该循环之前total设置为什么?