如何编写aspxgridview中存在的触发器组合框事件

时间:2011-11-26 06:26:49

标签: asp.net devexpress aspxgridview

我在asp.net中使用devexpress asp:GridView,有两列:“status”和“percentage”

“状态”列是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 个答案:

答案 0 :(得分:2)

将网格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 :(得分:1)

  

如何更改'百分比'的只读属性?

     

@Filip:完全正确!

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