Response.Write(e.Values.Count);        for (int i = 0; i < e.Values.Count; i++)
        {
            if (e.Values[i] != null)
            {
                e.Values[i] = Server.HtmlEncode(e.Values[i].ToString());
            }
            Response.Write("<script language='javascript'>alert('ok')</script>");   //测试是否来值
        }
//那个e.Values.Count 总是为0,明明有数据我实在想不通应怎样解决

解决方案 »

  1.   

    无论我怎么弄,它总是"0"...这个e.Values 到底是个什么意思,我找了。。MSDN,好像只有例子,却没有讲到这个e.Values具体的作用和解释。。
      

  2.   

    2.0的话,尽量用DataSource控件,不要自己设计DataSource然后DataBind,解释如下:
    http://cathsfz.sitesled.com/2006/09/aspnet-20-datasource.htm不用DataSource控件的话,你要用Reflector打开.NET Framework的代码慢慢看慢慢摸索着做。INSERT我没做过,UPDATE我做过一次,痛苦死我了,简单给你说一下经验和原理。你贴的代码属于OnItemInserting是不是?那个Values.Count属性应该是提交上来的字段的数量,每一个字段的提交值都保存在Values中。在使用DataSource控件时,DetailsView能够自动获取字段的数量及各字段的名称,然而手动绑定的时候就不行了。这时候你是不能够用Values的,只能够用老办法一个一个的从控件里取值。OnItemInserting是给你改变默认INSERT行为的,而默认INSERT行为通过DataSource控件实现,你没有DataSource控件根本就不执行默认INSERT行为,而必须你全手动编写自己的INSERT行为。