【问题标题】:ASPxGridview undefinedASPxGridview 未定义
【发布时间】:2011-02-25 02:07:31
【问题描述】:

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

如果你往下看:

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

  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”字段中选择企业或特许经营,我将使用客户端脚本来启用或禁用附加字段。

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

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”未定义

我已经在 web.config 中添加了 HTTPhandler:

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

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

正如您在下面看到的,我已插入 ClientInstanceName,

我已将 ClientIDMode 从 AutoID 更改为 Inherit 到 Static 到 Predictable,每个场景都不起作用并且仍然呈现:Microsoft JScript 运行时错误:'ASPxGridview' is undefined。

在我的 gridview 标签下方

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

我现在什至尝试创建一个只有 sqldatasource 和 gridview 的新页面,其中 storetype 字段作为一个组合框,并包括我之前帖子中提到的 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。 devexpress 的人帮不了我,花了 1 天时间来回答一个问题,所以它已经持续了将近一周...

谢谢 维尔纳

【问题讨论】:

    标签: devexpress undefined aspxgridview


    【解决方案1】:

    Java Script 是一种区分大小写的语言。所以,如果 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。我们会尽力帮助您。

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

    【讨论】:

      猜你喜欢
      • 2012-12-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多