1

GridViewwithがあり、チェックされたすべての行でCheckBoxes取得したいと思います。Cell[1]リストは常にになり'null'ます。コードは以下のとおりです。出力を表示する文字列を追加しましたが、これは正常に機能します。だから私はおそらくそれを間違って追加していますが、私は何を知りません。どんな助けでもいただければ幸いです。乾杯〜

List<int> indices = new List<int>();
CheckBox cb = new CheckBox();

string text = "";
foreach (GridViewRow row in GV0.Rows)
{
    if (((CheckBox)row.FindControl("CheckBox1")).Checked)
    {
        text += row.Cells[1].Text;
        indices.Add(int.Parse(row.Cells[1].Text));
    }
}
Label1.Text = text;
Session["indicesList"] = indices;
Response.Redirect("About.aspx");

リダイレクトされるページのコード:

        List<List<string>> all = new List<List<string>>();
        List<string> fields = new List<string>();
        List<Type> fieldtypes = new List<Type>();
        List<int> indices = new List<int>();
        int show = 0;

        if (!Page.IsPostBack)
        {
            all = (List<List<string>>)Session["all"];
            fields = (List<string>)Session["fields"];
            fieldtypes = (List<Type>)Session["fieldtypes"];
            indices = (List<int>)Session["indiceslist"];
            show = (int)Session["show"];
        }

        int j = 0;
        List<List<string>> dupes = new List<List<string>>();
        for (int i = 0; i < show; i++)
        {
            if (j < indices.Count)
            {
                if (int.Parse(all[i][0]) == indices[j])
                {
                    dupes.Add(all[i]);
                    j++;
                }
            }
        }
4

1 に答える 1

2

のキーを使用してセッションでリストを設定してindicesListいますが、のキーを使用してリストを取得していますindiceslist(文字「L」の大文字と小文字の違いに注意してください)。

セッションから取得および設定するリストのプロパティを作成することをお勧めします。管理がはるかに簡単になります。

public List<int> Indices
{
    get
    {
        var val = Session["indicesList"] as List<int>;
        if(val == null) 
        {
            val = new List<int>();
            Session["indicesList"] = val;
        }
        return val;
    }
    set
    {
        Session["indicesList"] = value;
    }
}
于 2013-01-25T17:41:42.683 に答える