как написать триггерный список событий, который присутствует внутри aspxgridview - PullRequest
1 голос
/ 26 ноября 2011

Я использую devexpress asp:GridView в asp.net с двумя столбцами: «статус» и «процент»

Столбец «status» представляет собой GridViewDataComboBoxColumn, который содержит два значения: «прогресс» и «завершен»

Столбец «процент» представляет собой GridViewDataColumn.

Что я хочу сделать, это:

  • Если я выберу завершено в статусе, то в процентах должен отображаться текст «100».
  • но я не знаю, как вызвать комбо-события, которые присутствуют внутри asp:GridView

Код, который у меня есть (пока):

<dxwgv:ASPxGridView ID="gridviewTaskProg" runat="server" 
    AutoGenerateColumns="False" DataSourceID="SqlDataSourceTasks" 

    onbeforeperformdataselect="gridviewTaskProg_BeforePerformDataSelect" 
    onrowupdating="gridviewTaskProg_RowUpdating" KeyFieldName="intProgressID" 
    oninitnewrow="gridviewTaskProg_InitNewRow" 
    onrowinserting="gridviewTaskProg_RowInserting" 
    oncancelrowediting="gridviewTaskProg_CancelRowEditing" 
    onstartrowediting="gridviewTaskProg_StartRowEditing">
    <Columns>
        <dxwgv:GridViewCommandColumn VisibleIndex="0">
            <EditButton Visible="True">
            </EditButton>
        </dxwgv:GridViewCommandColumn>
        <dxwgv:GridViewDataDateColumn FieldName="StartDateTime" VisibleIndex="1">
            <PropertiesDateEdit DisplayFormatString="dd/MM/yyyy hh:mm tt" 
                EditFormat="Custom" EditFormatString="dd/MM/yyyy hh:mm tt"></PropertiesDateEdit>
        </dxwgv:GridViewDataDateColumn>
        <dxwgv:GridViewDataDateColumn FieldName="EndDateTime" VisibleIndex="2">
            <PropertiesDateEdit DisplayFormatString="dd/MM/yyyy hh:mm tt" 
                EditFormat="Custom" EditFormatString="dd/MM/yyyy hh:mm tt" 
                dateonerror="Today"></PropertiesDateEdit>
        </dxwgv:GridViewDataDateColumn>
        <dxwgv:GridViewDataSpinEditColumn FieldName="Percentage" VisibleIndex="3">
            <PropertiesSpinEdit DisplayFormatString="g" NumberFormat="Custom"></PropertiesSpinEdit>
        </dxwgv:GridViewDataSpinEditColumn>
        <dxwgv:GridViewDataComboBoxColumn FieldName="Status" VisibleIndex="4">
            <PropertiesComboBox ValueType="System.String"><Items><dxe:ListEditItem Text="Progress" Value="Progress" /><dxe:ListEditItem Text="Completed" Value="Completed"/></Items></PropertiesComboBox>
            </dxwgv:GridViewDataComboBoxColumn>
        <dxwgv:GridViewDataMemoColumn Caption="Remarks" FieldName="Remarks" 
            VisibleIndex="5">
        </dxwgv:GridViewDataMemoColumn>
    </Columns>
</dxwgv:ASPxGridView>

Ответы [ 2 ]

2 голосов
/ 28 ноября 2011

Установите для сетки ClientInstanceName значение "grid1" (или любое другое имя, просто замените его в моем коде). Измените столбец со списком состояния следующим образом:

<dxwgv:GridViewDataComboBoxColumn FieldName="Status" VisibleIndex="4">
    <PropertiesComboBox ValueType="System.String">
        <Items>
            <dxe:ListEditItem Text="Progress" Value="Progress" />
            <dxe:ListEditItem Text="Completed" Value="Completed"/>
        </Items>
        <ClientSideEvents 
            SelectedIndexChanged="function(s,e) { 
                                    if(s.GetValue()=='Completed')
                                        grid1.GetEditor('Percentage').SetValue(100);
                                  }"
        />
    </PropertiesComboBox>
</dxwgv:GridViewDataComboBoxColumn>
1 голос
/ 28 ноября 2011

Как я могу изменить свойство readonly в процентах?

@ Филип: Точно!

<ClientSideEvents SelectedIndexChanged="function(s, e) { 
        if(s.GetValue() == 'Completed') {
            var txtEditor = grid1.GetEditor('Percentage');
            txtEditor.SetValue(100);
            txtEditor.SetEnabled(false);
        }
      }" />
...