首先,我使用的是Visual Studio 2010(Visual C#)和ASP.NET。
我正在使用GridView显示我公司当前的未平仓头寸。我有一列复选框,申请人可以查看他们想要申请的职位。为了消除重复数据,我在三个主表(POSITION,APPLICANT和APPLICATION)之间创建了一个链接表。它仅由每个表中的主键组成,因此如果一个人申请3个职位,我们将不会有3个整个申请进行筛选。
我需要选择所选位置的PositionID,并将它们存储在会话变量中供以后使用。
我的问题是,如何在不知道检查了多少的情况下这样做?我不想只创建一堆不会被使用的不必要的变量。我想我将不得不使用foreach循环,但在循环中,我不知道如何告诉它创建一个新的会话变量并将ID存储在其中。
我当然希望这个问题有道理。如果您需要澄清,请告诉我。
答案 0 :(得分:2)
您可以创建List<int>
或任何数据类型PositionID,并将其存储在会话变量中。
实际上,我会在控件或页面中创建一个属性
public List<int> SelectedPositionIDList
{
get
{
if(Session["SelectedPositions"] != null)
return Session["SelectedPositions"] as List<int>;
return new List<int>();
}
set
{
Session["SelectedPositions"] = value;
}
}
您可以遍历位置ID列表,
foreach(int positionId in SelectedPositionIdList)
{
//Do something.
}
当然,您需要在想要保存或执行某些操作时从gridview中获取ID。您可以通过基于您的实现循环遍历gridview行来实现。像下面的东西。
List<int> positions = new List<int>();
foreach(GridviewRow row in gdPositions)
{
CheckBox cb = row.FindControl("checkbox") as CheckBox;
if(cb != null && cb.Checked)
positions.Add(/*find position id from row here*/);
}
if(positions.Count > 0)
Session["SelectedPositionIdList"] = positions;