ASPxGridView: как отключить GridViewDataColumn, когда GridViewDataCheckColumn отмечен или не отмечен? - PullRequest
0 голосов
/ 28 ноября 2011

У меня есть ASPxGridView со следующими столбцами:

<dx:GridViewDataCheckColumn FieldName="ProtocolEnabled" Caption="Protocol Enabled">
    <DataItemTemplate>
        <asp:Literal ID="ltProtocolEnabled" runat="server" />
    </DataItemTemplate>
</dx:GridViewDataCheckColumn>
<dx:GridViewDataColumn FieldName="ProtocolCount" Width="0" Caption="Protocol Count">

В столбце флажка есть шаблон с литералом, поэтому я могу отображать Да / Нет вместо пустого флажка, но это, вероятно, TMI. Что мне нужно сделать, это:

В режиме редактирования: когда установлен флажок ProtocolEnabled, мне нужно включить текстовое поле ProtocolCount. Когда ProtocolEnabled не отмечен, мне нужно отключить ProtocolCount и установить его текст равным 0.

Я прошу не шаг за шагом, а общий указатель в правильном направлении. Я хотел бы использовать обратные вызовы, если это вообще возможно. Я также обещаю Я не буду удалять этот вопрос , поскольку вы отвечаете на него = P.

Обновление: Благодаря ответчику меня отправили в нужном мне направлении. Вот код, который я использовал:

<dx:GridViewDataCheckColumn FieldName="ProtocolEnabled" Caption="Protocol Enabled" CellStyle-HorizontalAlign="Left">
    <DataItemTemplate>
        <asp:Literal ID="ltProtocolEnabled" runat="server" />
    </DataItemTemplate>
    <PropertiesCheckEdit>
        <ClientSideEvents CheckedChanged="function(s,e) {ProtocolEnabledChecked(s);}" />
    </PropertiesCheckEdit>
</dx:GridViewDataCheckColumn>
<dx:GridViewDataColumn FieldName="ProtocolCount" Width="0" Caption="Protocol Count">

function ProtocolEnabledChecked(ck) {
    var x = gvApplicationServer.GetEditor("ProtocolCount");
    if (ck.GetValue()) {
        x.enabled = true;
    }
    else {
        x.SetValue(0);
        x.enabled = false;
    }        
}

Это клиентский код вместо обратного вызова.

1 Ответ

1 голос
/ 28 ноября 2011

Прежде всего, проверьте это для Доступ к элементам управления, содержащимся в шаблонах

Для отображения Да / Нет

  1. На элементе управления доступом HtmlRowCreated Event и установите его текстовое свойство после нахождения элемента управления в Литерал литерал = ASPxGridView1.FindRowCellTemplateControl (e.VisibleIndex, ASPxGridView1.Columns ["Name"] как GridViewDataColumn, "ASPxButtonEdit1") как литерал; literal.Text = (bool) grid.GetRowValues ​​(e.VisibleIndex, "columnName")? "Да": "Нет";

  2. В редактировании шаблона строки Сделайте, как вы делали, как описано выше ..

  3. Если вы хотите выполнить некоторые функции на стороне клиента, то .. создайте событие на стороне клиента OnClientClick и используйте флажок на стороне клиента. chkclientinstanceName.getValue (); или другой, чтобы проверить это проверено или нет ..

эти элементы управления доступны для клиента, поэтому включите / отключите с помощью txtClientName.SetEnabled(true/false);

для получения дополнительной помощи перейдите на

DevExpress.Web.ASPxEditors  ClientScript namespace..

Попробуйте это шаг за шагом .. надеюсь, это будет полезно ..

...