1

首先,我使用的是 Visual Studio 2010 (Visual C#) 和 ASP.NET。

我正在使用 GridView 来显示我公司当前的空缺职位。我有一列复选框,申请人可以在其中检查他们想要申请的职位。为了消除重复数据,我在三个主表(POSITION、APPLICANT 和 APPLICATION)之间创建了一个链接表。它仅由每个表中的主键组成,因此如果一个人申请 3 个职位,我们将不会筛选 3 个完整的申请。

我需要选择他们选择的位置的 PositionID,并将它们存储在会话变量中以备后用。

我的问题是,在不知道他们检查了多少的情况下,我该怎么做?我不想只创建一堆不会使用的不必要的变量。我想我将不得不使用一个 foreach 循环,但在循环中,我不知道如何告诉它创建一个新的会话变量并将 ID 存储在其中。

我当然希望这个问题有意义。如果您需要澄清,请告诉我。

4

1 回答 1

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;
于 2012-06-22T21:01:19.973 回答