none
关于CRM Customization页面的奇怪问题 RRS feed

  • 问题

  • 做了一个简单的测试,在一个aspx页面上,有一个dropdownlist,一个button,一个textbox,
    其中的代码有:
    protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                DropDownList1.Items.Add(new ListItem("1", "1"));
                DropDownList1.Items.Add(new ListItem("2", "2"));
                DropDownList1.Items.Add(new ListItem("3", "3"));
            }
            
        }
    protected void Button1_Click(object sender, EventArgs e)
        {
            TextBox1.Text = DropDownList1.SelectedValue;
        }
    但奇怪的是我如果把页面放到ISV下面,打开页面后点击button,dropdownlist控件里面的Items会被清空,而把页面放到其他网站下面,就不会被清空,也就是说能取到DropDownList1.SelectedValue的值,而前者为空,实在不知道是为什么?
    ps:谁能给个好的solution?
    功能描述:在一个aspx,选择完DropDownList1之后,点击button,在button事件中把选择的值写到后台数据库中?
    2009年3月17日 9:39

答案

  • Hi,gavingan
        测试后的确存在你所说的问题,可能mscrm的custom aspx与普通的aspx有点区别吧,解决方法如下:
    第一行的代码,你需要加上EnableViewState="true"
    <%@ Page Language="C#" AutoEventWireup="true" EnableViewState="true" CodeFile="Test.aspx.cs" Inherits="WebApplicationTest.Test" %>
    Batistuta Cai 如果您觉得对您有帮助,请点击“帖子内容有帮助”;如果你觉得回复很满意,请点击“标记为答复”
    • 已标记为答案 gavingan 2009年3月19日 1:35
    2009年3月18日 12:15
    版主

全部回复

  •  你做一个简单的sample,upload上来,我帮你测试
    Batistuta Cai 如果您觉得对您有帮助,请点击“帖子内容有帮助”;如果你觉得回复很满意,请点击“标记为答复”
    2009年3月17日 10:19
    版主
  •  论坛好像不能上传文件啊?
    其实也很简单,就我上面说的那些代码
    2009年3月18日 1:37
  • 刀客在吗?问题就是把这个页面放到ISV下就会得不到选择的值,而直接在VS里面测试就可以,实在有些奇怪
    2009年3月18日 7:53
  •  你把文件传到blog上,把地址贴上来,我这边没有遇到过这样的问题,也无法重现你的问题.
    Batistuta Cai 如果您觉得对您有帮助,请点击“帖子内容有帮助”;如果你觉得回复很满意,请点击“标记为答复”
    2009年3月18日 8:01
    版主
  •  谢谢,我晚上测试下
    Batistuta Cai 如果您觉得对您有帮助,请点击“帖子内容有帮助”;如果你觉得回复很满意,请点击“标记为答复”
    2009年3月18日 8:18
    版主
  • Hi,gavingan
        测试后的确存在你所说的问题,可能mscrm的custom aspx与普通的aspx有点区别吧,解决方法如下:
    第一行的代码,你需要加上EnableViewState="true"
    <%@ Page Language="C#" AutoEventWireup="true" EnableViewState="true" CodeFile="Test.aspx.cs" Inherits="WebApplicationTest.Test" %>
    Batistuta Cai 如果您觉得对您有帮助,请点击“帖子内容有帮助”;如果你觉得回复很满意,请点击“标记为答复”
    • 已标记为答案 gavingan 2009年3月19日 1:35
    2009年3月18日 12:15
    版主
  •   谢谢刀客,这个的确可以,但是每次选择的时候就递交一次服务器,用户体验显得很不友好,而且我有很多的代码都放在page_Load里面,这样做可能会导致一些新的问题,有其他的解决方案吗?
    2009年3月18日 13:26
  •  每次选择的时候就递交一次服务器?? 不大清楚你的意思,就算你们没有设置page的EnableViewState=true,默认也是true的,只是到了mscrm默认好像变成了false了。




    Batistuta Cai 如果您觉得对您有帮助,请点击“帖子内容有帮助”;如果你觉得回复很满意,请点击“标记为答复”
    2009年3月18日 14:06
    版主
  • 官方对 EnableViewState 的解释:指示是否在页请求之间保持视图状态。如果要保持视图状态,则为 true;否则为 false。默认值为 true。

    也就是你设置了EnableViewState="true",并不是说每次都要执行page_Load的代码。

    看有关下面的文章会清楚些
    http://www.cftea.com/c/2007/08/H8AQ810AJM4P9OJZ.asp
    Batistuta Cai 如果您觉得对您有帮助,请点击“帖子内容有帮助”;如果你觉得回复很满意,请点击“标记为答复”
    2009年3月18日 14:11
    版主
  •  非常感谢刀客!采用你的方法,问题已经解决。
    我上面说错了,以为是那个autopostback属性,因为这个属性默认为false的话就不会触发它的selectedIndexChange方法,于是网上就有人说要打开这个属性。不过不理解的是,该控件的EnableViewState是默认为true的,为何要在页面显示添加一个EnableViewState? 难道是这个控件特殊,依赖于page?其他的控件就不需要这样显示指定页面的viewstate。
    多谢刀客的指点!
    2009年3月19日 1:50