for(int i=0;i<dsAdmin.Tables[0].Rows.Count;i++)
                {
                    lblAdmin.Visible = true;
                    lblAdminNote.Visible = false;
                    Session["ProjectName"] = dsAdmin.Tables[0].Rows[i][0];
                    lblAdmin.Text += "你发布了:<a href='ProjectInfo.aspx'>"+dsAdmin.Tables[0].Rows[i][0]+"</a>项目<br/>";
                }安装上面的代码我读取出来了3个值:
你发布了:A项目
你发布了:B项目
你发布了:C项目
可是当我单击A的时候,因为for语句执行结束之后,session的值就是C了。大家有没有什么好的方法解决呢?

解决方案 »

  1.   

    for循环里再调用一个方法,
    该方法传递你每次遍历到的值
    在这个方法中拼接
      

  2.   

    首先循环把A放进去了,后面继续循环,又把B和C放进去了,因为如果给同样的一个Session对象赋值的话,最后一个值会把前面的全部覆盖,所以Session就变成了C
      

  3.   

    可以在循环的末尾判断这个Session是不是等于null的,不等于null就不给他赋值了,如果等于null,继续赋值
      

  4.   

    dsAdmin.Tables[0].Rows[i][0];
    放到一个数组 或 list<T>Session["ProjectName"] = 这个数组;然操作这个数组
      

  5.   

    就是获取值,然后可以根据不同的值查看详细信息。只不过我用的for语句,执行完之后的值就是最后一个了。
      

  6.   

    你想让点A就最终出来A吗
    我说的很清楚了啊
    你在For循环时,不是每次都有值吗,那就再加个方法,用来传你每次循环的值
    在你写的这个方法里
    来决定最终的输出
      

  7.   

    不用Session的,Session是达不到你想要的效果,只有一边执行,一边输出            System.Web.HttpContext.Current.Response.Write(s);
                System.Web.HttpContext.Current.Response.Flush();
      

  8.   

    你的session键值是一个,当然是新赋值时就覆盖以前的赋值了
      

  9.   


    说了用数组或者list<T>    arrylist   都行啊!
      

  10.   

       for (int i = 0; i < dsAdmin.Tables[0].Rows.Count; i++)
                    {
                        lblAdmin.Visible = true;
                        lblAdminNote.Visible = false;
                       
                        lblAdmin.Text += "你发布了:<a href='ProjectInfo.aspx?value=" + dsAdmin.Tables[0].Rows[i][0] + "'>" + dsAdmin.Tables[0].Rows[i][0] + "</a>项目<br/>";
                    }
                 ProjectInfo.aspx (你的接收页面)
                    Session["ProjectName"] = Request["value"].ToString();是不是更好些呢- -
      

  11.   


    string []str;
    for(int i=0;i<dsAdmin.Tables[0].Rows.Count;i++)
                    {
                        lblAdmin.Visible = true;
                        lblAdminNote.Visible = false;
                         str[i]= dsAdmin.Tables[0].Rows[i][0];
                        lblAdmin.Text += "你发布了:<a href='ProjectInfo.aspx'>"+dsAdmin.Tables[0].Rows[i][0]+"</a>项目<br/>";
                    }
    Session["ProjectName"]=str;
      

  12.   

    for(int i=0;i<dsAdmin.Tables[0].Rows.Count;i++)
                    {
                        lblAdmin.Visible = true;
                        lblAdminNote.Visible = false;
                        Session["ProjectName"] = dsAdmin.Tables[0].Rows[i][0];
                       
                       YouMethod(Session["ProjectName"]);
                    }
    public void YouMethod(string msg)
    {
    if(msg=="A")
    lblAdmin.Text += "你发布了:<a href='ProjectInfo.aspx'>A"</a>项目<br/>";
    ..
    ....
    .....不知道你是想这样的意思吗
      }
      

  13.   

    这个我试过了啊,主要是我其他还有地方要用到这个页面,都是用的session传的值
      

  14.   

    可是这样我单击A的时候,不就传递不到session的值了吗
      

  15.   


    string []str;
    for(int i=0;i<dsAdmin.Tables[0].Rows.Count;i++)
                    {
                        lblAdmin.Visible = true;
                        lblAdminNote.Visible = false;
                         str[i]= dsAdmin.Tables[0].Rows[i][0];
                        lblAdmin.Text += "你发布了:<a href='ProjectInfo.aspx'>"+dsAdmin.Tables[0].Rows[i][0]+"</a>项目<br/>";
                    }
    Session["ProjectName"]=str;
    这样你都还看不懂?   别的页面  把Session["ProjectName"]转成str数组就是了啊!!!string []str=Session["ProjectName"] as string[];string aa=str[0];
    string bb=str[1];
      

  16.   

    你循环给值就是循环覆盖了 session
      

  17.   

    不知道了,我想到的只是,在for循环里加个方法
    保存每次的值