Devexpress ASPxGridview未定义

Devexpress ASPxGridview未定义,devexpress,undefined,aspxgridview,Devexpress,Undefined,Aspxgridview,我有一个基本的1表网格。我有一个名为“分支类型”的字段。分支机构类型只能是公司或特许经营。当我单击ASPxgridview行上的edit按钮时,我想显示和隐藏编辑表单上的字段,这取决于它是什么分支类型。因此,如果是公司,我希望显示Manager字段并隐藏Owner字段。当分行类型为特许经营时,我希望在编辑表单上显示所有者字段,隐藏经理字段。所有细节都可以显示在网格视图上,但在编辑表单上,我想强制用户只填写适用的字段 如果你看下面: 这基本上就是我在加载编辑表单时想要实现的: protecte

我有一个基本的1表网格。我有一个名为“分支类型”的字段。分支机构类型只能是公司或特许经营。当我单击ASPxgridview行上的edit按钮时,我想显示和隐藏编辑表单上的字段,这取决于它是什么分支类型。因此,如果是公司,我希望显示Manager字段并隐藏Owner字段。当分行类型为特许经营时,我希望在编辑表单上显示所有者字段,隐藏经理字段。所有细节都可以显示在网格视图上,但在编辑表单上,我想强制用户只填写适用的字段

如果你看下面:

这基本上就是我在加载编辑表单时想要实现的:

  protected void ASPxGridViewStores_CellEditorInitialize(object sender, ASPxGridViewEditorEventArgs e)
 {

 if (!ASPxGridViewStores.IsEditing || e.Column.FieldName != "StoreOwnershipID") return;
    if(e.KeyValue == DBNull.Value || e.KeyValue == null) return;
    object val = ASPxGridViewStores.GetRowValuesByKeyValue(e.KeyValue, "S_ID");
    if(val == DBNull.Value) return;
    int StoreOwnershipID = (Int32)val;

    if (StoreOwnershipID == 4)
    { ASPxComboBox ManagerID = (ASPxComboBox)ASPxGridViewStores.FindEditFormTemplateControl("ManagerID");
        ManagerID.Enabled = true;
        ASPxComboBox ContactID = (ASPxComboBox)ASPxGridViewStores.FindEditFormTemplateControl("ContactID");
        ManagerID.Enabled = true; 
    }
    else
    { ASPxComboBox ManagerID = (ASPxComboBox)ASPxGridViewStores.FindEditFormTemplateControl("ManagerID");
        ManagerID.Enabled = false;
        ASPxComboBox ContactID = (ASPxComboBox)ASPxGridViewStores.FindEditFormTemplateControl("ContactID");
        ManagerID.Enabled = false;
    }

}
然后根据在“StoreOwnershipID”字段中选择Corporate或特许经营,我将使用客户端脚本启用或禁用其他字段

我也做了一些研究,得出了以下代码:

SelectedIndexChanged="function(s, e) {      
var value = s.GetValue();
    if(value == 4)
        GridViewStores.GetEditor("OwnerName").SetVisible(true);
    else
         GridViewStores.GetEditor("OwnerName").SetVisible(false);
}"
但当调用此函数时,我会得到以下错误:

Microsoft JScript运行时错误:“GridViewStores”未定义

我已将HTTPhandler添加到web.config中:

<httpModules>
  <add type="DevExpress.Web.ASPxClasses.ASPxHttpHandlerModule, DevExpress.Web.v10.2, Version=10.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" name="ASPxHttpHandlerModule" />
</httpModules>


如下所示,我插入了ClientInstanceName

我已将ClientIDMode从AutoID更改为Inherit,从静态更改为可预测,并且每个场景都不工作,仍然呈现:Microsoft JScript运行时错误:“ASPxGridview”未定义

在我的gridview标签下面

<dx:ASPxGridView ID="ASPxGridView" runat="server" AutoGenerateColumns="False" 
    ClientIDMode="Predictable" DataSourceID="SqlDataSource1" KeyFieldName="S_ID" 
    ClientInstanceName="ASPxGridView">

我现在甚至试着用一个sqldatasource和gridview创建一个新页面,其中storetype字段为acombobox,包括我在以前的文章中提到的javascript。。一点运气都没有。我已经在声明httphandler的地方为您提供了web.config设置,那么您还建议我做些什么来让它工作呢

这是我的网络配置:

节启用配置 所使用的安全身份验证模式的 ASP.NET来标识传入用户。 --> 节启用配置 发生未经处理的错误时应采取的措施 在请求执行期间。明确地 它使开发人员能够配置html错误页面 显示以代替错误堆栈跟踪

    <customErrors mode="RemoteOnly" defaultRedirect="GenericErrorPage.htm">
        <error statusCode="403" redirect="NoAccess.htm" />
        <error statusCode="404" redirect="FileNotFound.htm" />
    </customErrors>
    -->
<httpModules>
  <add type="DevExpress.Web.ASPxClasses.ASPxHttpHandlerModule, DevExpress.Web.v10.2, Version=10.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" name="ASPxHttpHandlerModule" />
</httpModules>

<httpHandlers>
  <add type="DevExpress.Web.ASPxClasses.ASPxHttpHandlerModule, DevExpress.Web.v10.2, Version=10.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" verb="GET" path="DX.ashx" validate="false" /> 
</httpHandlers>

<pages controlRenderingCompatibilityVersion="3.5" clientIDMode="AutoID" />

-->

很抱歉问了这么长的问题。顺便说一句,这是在使用DevExpress Gridview。DevXpress的人帮不上我,花了一天时间回答一个问题,所以这已经持续了将近一个星期了

多谢各位
Werner

Java脚本是一种区分大小写的语言。因此,如果ClientInstanceName设置为ASPxGridView,则代码应为:

ASPxGridView.GetEditor(“OwnerName”).SetVisible(true)

我看到错误消息包含“ASPxGridview;”标识符。这意味着您的代码包含ASPxGridview标识符,但您应该使用ASPxGridview(基于您的标记)。此外,我认为该代码是错误的:

if (StoreOwnershipID == 4)
    { ASPxComboBox ManagerID = (ASPxComboBox)ASPxGridViewStores.FindEditFormTemplateControl("ManagerID");
        ManagerID.Enabled = true;
        ASPxComboBox ContactID = (ASPxComboBox)ASPxGridViewStores.FindEditFormTemplateControl("ContactID");
        ManagerID.Enabled = true; 
    }
    else
    { ASPxComboBox ManagerID = (ASPxComboBox)ASPxGridViewStores.FindEditFormTemplateControl("ManagerID");
        ManagerID.Enabled = false;
        ASPxComboBox ContactID = (ASPxComboBox)ASPxGridViewStores.FindEditFormTemplateControl("ContactID");
        ManagerID.Enabled = false;
    }
将ManagerID对象的Enabled属性两次设置为相同的值。请检查一下。我没有什么要补充的。如果这没有帮助,请让我知道支持中心的票证ID,如果可能,请在此处附上页面(cs和aspx)和web.config的源代码。我们会尽力帮助你


更新:我在支持中心找到了您的问题并回答了。希望,这有帮助

Java脚本是一种区分大小写的语言。因此,如果ClientInstanceName设置为ASPxGridView,则代码应为:

ASPxGridView.GetEditor(“OwnerName”).SetVisible(true)

我看到错误消息包含“ASPxGridview;”标识符。这意味着您的代码包含ASPxGridview标识符,但您应该使用ASPxGridview(基于您的标记)。此外,我认为该代码是错误的:

if (StoreOwnershipID == 4)
    { ASPxComboBox ManagerID = (ASPxComboBox)ASPxGridViewStores.FindEditFormTemplateControl("ManagerID");
        ManagerID.Enabled = true;
        ASPxComboBox ContactID = (ASPxComboBox)ASPxGridViewStores.FindEditFormTemplateControl("ContactID");
        ManagerID.Enabled = true; 
    }
    else
    { ASPxComboBox ManagerID = (ASPxComboBox)ASPxGridViewStores.FindEditFormTemplateControl("ManagerID");
        ManagerID.Enabled = false;
        ASPxComboBox ContactID = (ASPxComboBox)ASPxGridViewStores.FindEditFormTemplateControl("ContactID");
        ManagerID.Enabled = false;
    }
将ManagerID对象的Enabled属性两次设置为相同的值。请检查一下。我没有什么要补充的。如果这没有帮助,请让我知道支持中心的票证ID,如果可能,请在此处附上页面(cs和aspx)和web.config的源代码。我们会尽力帮助你

更新:我在支持中心找到了您的问题并回答了。希望,这有帮助