[英]Why does this not work?
我有一个类,它将作为变量来存储来自文本框的数据:
public class Business
{
Int64 _businessID = new Int64();
int _businessNo = new int();
string _businessName;
string _businessDescription;
public Int64 BusinessID
{
get { return Convert.ToInt64(_businessID.ToString()); }
}
public int BusinessNo
{
get { return _businessNo; }
set { _businessNo = value; }
}
public string BusinessName
{
get { return _businessName; }
set { _businessName = value; }
}
public string BusinessDescription
{
get { return _businessDescription; }
set { _businessDescription = value; }
}
然后,我有了将文本框中的数据存储到会话和列表中的代码(一次可以有很多企业上载到数据库)-现在数据库无关。 然后,我想将存储在会话中的业务列表显示到gridview上:(b =类业务)
List<Business> businessCollection = new List<Business>();
protected List<Business> GetBusinesses()
{
return (List<Business>)Session["Business"];
}
protected void btnRow_Click(object sender, EventArgs e)
{
if (Session["Business"] != null)
businessCollection = (List<Business>)Session["Business"];
Business b = new Business();
b.BusinessNo = Convert.ToInt32(txtBNo.Text);
b.BusinessName = txtBName.Text;
b.BusinessDescription = txtBDesc.Text;
businessCollection.Add(b);
GridView1.DataSource = GetBusiness();
GridView1.DataBind();
}
似乎没有将列表添加到gridview,有人可以帮忙吗?
调试您的代码,并确保if (Session["Business"] != null)
实际为true。
如果为假,则您将添加到从未从GetBusinesss
返回的列表中
没有更多的信息,您可以像这样重写它:
List<Business> businessCollection = new List<Business>();
protected List<Business> GetBusinesses()
{
if (Session["Business"] == null)
return businessCollection;
else
return (List<Business>)Session["Business"];
}
protected void btnRow_Click(object sender, EventArgs e)
{
Business b = new Business();
b.BusinessNo = Convert.ToInt32(txtBNo.Text);
b.BusinessName = txtBName.Text;
b.BusinessDescription = txtBDesc.Text;
var currentCollection = GetBusinesses();
currentCollection.Add(b);
GridView1.DataSource = currentCollection;
GridView1.DataBind();
}
我个人不会这样做,因为您似乎需要分配给Session["Business"]
但我不想更改代码的逻辑。
更新资料
我想用我认为你想要完成的事情来更新它。
protected List<Business> GetBusinesses()
{
if (Session["Business"] == null)
Session["Business"] = new List<Business>();
return (List<Business>)Session["Business"];
}
protected void btnRow_Click(object sender, EventArgs e)
{
Business b = new Business();
b.BusinessNo = Convert.ToInt32(txtBNo.Text);
b.BusinessName = txtBName.Text;
b.BusinessDescription = txtBDesc.Text;
var currentCollection = GetBusinesses();
currentCollection.Add(b);
GridView1.DataSource = currentCollection;
GridView1.DataBind();
}
似乎您没有为Session["Business"]
分配任何内容
您出现问题的可能性很大,是由于您不一致地引用业务列表对象而引起的。 您已经为此对象创建了访问器,因此可以在任何地方使用它。
这个:
if (Session["Business"] != null)
businessCollection = (List<Business>)Session["Business"];
应该:
var businessCollection = GetBusiness();
注意使用var
:我怀疑将businessCollection定义为成员变量是问题的一部分。 无论如何,如果您打算将列表存储在会话中,那将是一个糟糕的设计。 因此,我还将删除businessCollection的成员声明,并使用局部范围的变量。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.