所有这一切都输出'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/>");
}
}
}
答案 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
设置为什么?