1

I am using devexpress asp:GridView in asp.net with two columns: "status" and "percentage"

The column "status" is a GridViewDataComboBoxColumn which contain two values: "progress" and "completed"

The column "percentage" is a GridViewDataColumn.

What I want to do is:

  • If I select completed in status then the percentage should display the text '100'.
  • but I don't know how to trigger combobox events which is present inside asp:GridView

The code I have (so far) is:

<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>
Filip
  • 3,257
  • 2
  • 22
  • 38

2 Answers2

2

Set grid ClientInstanceName to "grid1" (or any other name, just replace it in my code). Change status combo box column as follows:

<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>
Filip
  • 3,257
  • 2
  • 22
  • 38
1

How can i change the readonly property of 'percentage'?

@Filip: Exactly!

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