Devexpress Sitecore中的DevXPress控件未发回

Devexpress Sitecore中的DevXPress控件未发回,devexpress,sitecore,Devexpress,Sitecore,我在Sitecore(7.5)中使用DevExpress控件时遇到一些问题。我已经通过在Sitecore解决方案之外(但在同一IIS站点)的aspx页面中使用相同的代码,验证了在Sitecore中使用控件存在问题 问题是,在DevExpress组合框控件的回发中,我没有得到任何选定的值。我试过以下方法 已添加到web.config: <rendering> <typesThatShouldNotBeExpanded> <type>Dev

我在Sitecore(7.5)中使用DevExpress控件时遇到一些问题。我已经通过在Sitecore解决方案之外(但在同一IIS站点)的aspx页面中使用相同的代码,验证了在Sitecore中使用控件存在问题

问题是,在DevExpress组合框控件的回发中,我没有得到任何选定的值。我试过以下方法

已添加到web.config:

<rendering>
    <typesThatShouldNotBeExpanded>
        <type>DevExpress.Web</type>
    </typesThatShouldNotBeExpanded>
</rendering>

DevExpress.Web
还尝试将DXR.axd添加到web.config中的Sitecore“IgnoreUrlPrefixes”设置中。 我还尝试在DevEx控件上设置EnableCallbackMode=“false”

这是我使用的测试代码,它在正常的aspx页面中工作,但不是子布局的一部分

ASPX:


政务司司长:

受保护的无效页面加载(对象发送方,事件参数e)
{
aspxcomboxloja.DataSource=CreateRightListDataSource();
aspxcomboxloja.DataBind();
}
私有IEnumerable CreateRightListDataSource()
{
对于(int i=0;i<100;i++)
{
产生返回new{codigo=Guid.NewGuid(),nome=“nome”+i};
}
}
受保护的无效按钮\u单击(对象发送者,事件参数e)
{
字符串retVal=aspxcomboxloja.Value.ToString();
Output.Text=retVal;
}
尝试检索值的按钮单击位置出错。它为空(与所选项目一样)。屏幕/Sitecore日志中出现错误:

异常:System.NullReferenceException 消息:对象引用未设置为对象的实例

是否有在Sitecore中使用DevXPress控件的经验?我肯定我在做傻事


非常感谢。

不完全确定,但这感觉像是回发的.NET事件周期问题。在每次页面加载时,甚至是回发时,都会重新绑定数据源。这通常会影响视图状态。您是否尝试过使用
if(!IsPostBack)
包装数据绑定


编辑:我还注意到,每次呈现页面时都会生成一个新的GUID。我不确定Codigo是什么,但您的第一次加载将使用与回发不同的GUID。

谢谢您的帮助。通过更改配置中的AutomaticDataBind设置,我成功地解决了这个问题。i、 e.SC包括文件:

<configuration xmlns:patch="http://www.sitecore.net/xmlconfig/">
  <sitecore>
    <settings>
      <setting name="AutomaticDataBind">
        <patch:attribute name="value">true</patch:attribute>
      </setting>
    </settings>
  </sitecore>
</configuration>

真的

改变
似乎是正确的选择;但是,它似乎没有效果。

您在Sitecore日志中看到任何错误吗?当您单击按钮时,浏览器控制台中是否有任何错误?Hi@JayS,除了我在屏幕上看到的以外,日志中没有任何内容(对象引用未设置为对象错误的实例)。我将更新上面的问题以反映这一点。谢谢。devexpress控件是否发出JavaScript并调用http模块?如果是这样的话,您是否检查了您的控制台/fiddler以查看页面上正在进行的任何底层请求?嗨@goldengrahams,运行fiddler时没有错误。在Sitecore之外的页面上,我得到了表单数据,即“AspXPOppControl1$ASPxFormLayout1$ASPxComboBoxLoja$DDD$L=e330d2cc-92ce-4af0-b8bd-38e1ab5c2488”当通过Sitecore页面执行相同操作时,我仍然会在回发时得到数据:“dbcontent\u 0$AspXPOpopOppControl1$ASPxFormLayout1$AspBoxBoxBoxLoja$DDD$L=DDD$L=dd78709d-1777-47fe-9225-8b3327e117af”然而在这一点上,我确实得到了obj。ref.error.FYI看起来Sitecore和使用某些.net控件确实存在问题。如果您有权访问SDN,可以在以下位置找到文章:。我尝试过在web.config中修改设置,但还没有成功。很遗憾,对于devexpress控件,您必须在每次往返服务器时将数据绑定到控件。我以前遇到过这个问题(参考:)。我还生成了一个新的GUID,每个GUID只是为了创建一些测试数据。谢谢
protected void Page_Load(object sender, EventArgs e)
        {
            ASPxComboBoxLoja.DataSource = CreateRightListDataSource();
            ASPxComboBoxLoja.DataBind();
        }

        private IEnumerable CreateRightListDataSource()
        {
            for (int i = 0; i < 100; i++)
            {
                yield return new { codigo = Guid.NewGuid(), nome = "nome " + i };
            }

        }

        protected void Button_Click(object sender, EventArgs e)
        {
            string retVal = ASPxComboBoxLoja.Value.ToString();
            Output.Text = retVal;
        }
<configuration xmlns:patch="http://www.sitecore.net/xmlconfig/">
  <sitecore>
    <settings>
      <setting name="AutomaticDataBind">
        <patch:attribute name="value">true</patch:attribute>
      </setting>
    </settings>
  </sitecore>
</configuration>