1

まず、Visual Studio 2010 (Visual C#) と ASP.NET を使用しています。

会社で現在開いているポジションを表示する GridView を使用しています。応募者が応募したいポジションをチェックできるチェックボックスの列があります。重複データを排除するために、3 つのメイン テーブル (POSITION、APPLICANT、および APPLICATION) の間にリンク テーブルを作成しました。これらの各テーブルの主キーのみで構成されているため、1 人が 3 つのポジションに応募した場合、3 つの応募全体をふるいにかける必要はありません。

彼らが選択した位置の PositionID を選択し、後で使用できるようにセッション変数に保存する必要があります。

私の質問は、彼らがチェックした数を知らずにどうやってそれを行うのですか? 使用されない不必要な変数をたくさん作成したくありません。foreach ループを使用する必要があると思いますが、ループ内で、新しいセッション変数を作成して ID を格納するように指示する方法がわかりません。

この質問が理にかなっていることを願っています。説明が必要な場合は、お知らせください。

4

1 に答える 1

2

または任意のデータ型 PositionID を作成し、List<int>それをセッション変数に格納するだけです。

実際、コントロールまたはページにプロパティを次のように作成します。

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.
}

もちろん、保存したいとき、または何らかのアクションを実行するときに、グリッドビューから ID を取得する必要があります。実装に基づいてグリッドビューの行をループすることで、おそらくそれを行うことができます。以下のようなもの。

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 に答える