【发布时间】: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