C# 为什么这不起作用?
我有一个类,它将作为变量来存储文本框中的数据:C# 为什么这不起作用?,c#,list,session,gridview,C#,List,Session,Gridview,我有一个类,它将作为变量来存储文本框中的数据: public class Business { Int64 _businessID = new Int64(); int _businessNo = new int(); string _businessName; string _businessDescription; public Int64 BusinessID { get { return Convert.ToInt64(_
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 businessCollection=new List();
受保护的列表getbusiness()
{
返回(列表)会话[“业务”];
}
受保护的无效btnRow\U单击(对象发送者,事件参数e)
{
if(会话[“业务”]!=null)
businessCollection=(列表)会话[“业务”];
业务b=新业务();
b、 BusinessNo=Convert.ToInt32(txtBNo.Text);
b、 BusinessName=txtBName.Text;
b、 BusinessDescription=txtBDesc.Text;
businessCollection.添加(b);
GridView1.DataSource=GetBusiness();
GridView1.DataBind();
}
它似乎没有将列表添加到gridview,有人能帮忙吗?您似乎没有为
会话[“业务”]
调试代码,并确保如果(会话[“业务”!=null)
实际计算结果为true
如果为false,则您将添加到从不从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();
}
您的问题很有可能是由于不一致地引用业务列表对象造成的。您已经为此对象创建了访问器,因此可以在任何地方使用它 这:
注意
var
:我怀疑将businessCollection定义为成员变量是问题的一部分。在任何情况下,如果您的目的是在会话中存储列表,那么这是一种糟糕的设计。因此,我还将删除businessCollection的成员声明,并坚持使用一个局部作用域变量。GetBusiness()是否返回一个非空的结果?那么,您已经做了多少?Session[“Business”]
是否实际被填充?此外,向businessCollection
添加实体的目的是什么。。。然后忽略它,取而代之的是再次检索Session[Business]
以与列表进行数据绑定?我觉得很可疑……正如Nathan所建议的,GetBusiness()是否返回非空值。列表不能为空,但可能包含0项。将对象添加到businessCollection后,是否应将其重新分配到会话[“Business”]?还有,这个有趣的业务是什么——“get{return Convert.ToInt64(_businessID.ToString());}”
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();
}
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();
}
if (Session["Business"] != null)
businessCollection = (List<Business>)Session["Business"];
var businessCollection = GetBusiness();