ASPxGridview не определено - PullRequest
       21

ASPxGridview не определено

1 голос
/ 23 февраля 2011

У меня есть базовая сетка на 1 стол.У меня есть поле с именем Тип филиала.Тип филиала может быть только корпоративный или франшизный.Когда я нажимаю кнопку редактирования в строке ASPxgridview, я хотел бы отобразить и скрыть поля в форме редактирования, в зависимости от того, какой это тип ветви.Так что, если это корпоративный, я хотел бы отобразить поле диспетчера и скрыть поле владельца.Когда тип ветви - Франшиза, я хотел бы, чтобы поле Владелец отображалось, а поле Менеджер было скрыто в форме редактирования.все детали могут отображаться в виде сетки, но в форме редактирования я хотел бы заставить пользователя заполнять только соответствующие поля.

Если вы посмотрите ниже:

это в основном то, что я хочучтобы достичь при загрузке формы редактирования:

  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;
    }

}

, а затем в зависимости от выбора Corporate или Franchise в поле «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' не определен

Я добавил HTTP-обработчик в 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>

и

<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 'не определено.

ниже моего тега gridview

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

Теперь я даже попытался создать новую страницу, используя только sqldatasource и gridview с полем storetype в качестве acombobox и включив JavaScript какупоминается в моих предыдущих постах .. и не повезло вообще.я дал вам свои настройки web.config, где я объявил httphandler, так что еще вы предлагаете мне сделать, чтобы это заработало?

вот мой webconfig:

раздел позволяет настроить режим аутентификации безопасности, используемый 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 день отвечают на вопрос, так что это продолжается уже почти неделю ...

Спасибо, Вернер

1 Ответ

1 голос
/ 24 февраля 2011

Java Script является регистрозависимым языком. Итак, если для ClientInstanceName задано значение ASPxGridView, ваш код должен быть:

ASPxGridView.GetEditor ( "OwnerName") SetVisible (истина);.

Я вижу, что сообщение об ошибке содержит «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;
    }

Вы дважды устанавливаете для свойства Enabled объекта ManagerID одно и то же значение. Пожалуйста, проверь это. Мне нечего добавить. если это не помогает, сообщите мне идентификатор заявки в центр поддержки и, если возможно, прикрепите туда исходный код страницы (cs и aspx) и файл web.config. Мы постараемся вам помочь.

Обновление: Я нашел ваш вопрос в центре поддержки и ответил на него. Надеюсь это поможет.

...