簡體   English   中英

如何使用DevExpress ASPxGridView對字段進行排序

[英]How to do sorting of field using DevExpress ASPxGridView

我有一個字段金額,該字段應顯示curreny +金額。 從那時起,我無法為fieldName提供'$'200,因此我將該字段設置為未綁定。 發生排序,但填充的數據不正確。 我的數量從40到500不等。但是在對降序顯示100和升序顯示99.9進行排序時,請幫助解決此問題。

//設計師

  <dx:ASPxGridView ID="gridReports" runat="server" Width="100%" KeyFieldName="SID" ClientInstanceName="gridReports" 
onpageindexchanged="gridReports_PageIndexChanged" onrowcommand="gridReports_RowCommand" AutoGenerateColumns="False" oncustomunboundcolumndata="gridReports_CustomUnboundColumnData" oncustomcolumndisplaytext="gridReports_CustomColumnDisplayText">
 <SettingsBehavior EnableRowHotTrack="true" /> <SettingsPager AlwaysShowPager="true" Position="Bottom" PageSize="25" /> 
<Columns> 
<dx:GridViewDataColumn CellStyle-HorizontalAlign="right" Width="24%" Caption="AMOUNT" VisibleIndex="5" UnboundType="Decimal" FieldName="ForeName" Settings-SortMode="Value">
 </Columns> 
<SettingsBehavior ConfirmDelete="True" /> <SettingsBehavior ConfirmDelete="True" EnableRowHotTrack="True" /> <SettingsPager AlwaysShowPager="True" PageSize="25"> </SettingsPager>

//碼

  protected void gridReports_CustomUnboundColumnData(object sender, DevExpress.Web.ASPxGridView.ASPxGridViewColumnDataEventArgs e)
        {
            if (e.Column.FieldName == "ForeName")
            {
                string currency = (string)e.GetListSourceFieldValue("DEFAULT_CURRENCY");
                string amount = (string)e.GetListSourceFieldValue("AMOUNT");
                e.Value = GTYPE(currency) + amount;  

            }
        }

請不要在'gridReports_CustomColumnDisplayText'中給定值和displayText,但是排序沒有進行。我也將UnboundType更改為Integer和十進制。

還嘗試了此方法:

protected void gridReports_CustomColumnDisplayText(object sender, DevExpress.Web.ASPxGridView.ASPxGridViewColumnDisplayTextEventArgs e)
        {
            if (e.Column.FieldName == "ForeName")
            {
                object currency = e.GetFieldValue("DEFAULT_CURRENCY");
                object amount = e.GetFieldValue("AMOUNT");
                e.DisplayText = ((string)GTYPE(currency.ToString()) + amount);
                e.Value = Decimal.Parse(amount.ToString());


            }
        }

數據集中的Amount字段為字符串,因此,最低編號為1,最高編號為9,這導致了排序問題。 通過將“金額”字段轉換為十進制來解決此問題。

 //Code added for sorting Amount field:

    if (ds != null)
    {

        DataTable dtCloned = ds.Tables[0].Clone();
        dtCloned.Columns["AMOUNT"].DataType = typeof(decimal);
        foreach (DataRow row in ds.Tables[0].Rows)
        {
            dtCloned.ImportRow(row);
        }
        ds = null;
        ds = new DataSet();
        ds.Tables.Add(dtCloned);
    } 

直接將“金額”字段與網格視圖綁定:

<dx:GridViewDataColumn FieldName="AMOUNT" Caption="Amount" Width="100px" >
 </dx:GridViewDataColumn> 

要添加貨幣符號,請在ColumnDisplayText方法中綁定數據

 protected void gridReports_CustomColumnDisplayText(object sender, DevExpress.Web.ASPxGridView.ASPxGridViewColumnDisplayTextEventArgs e)
        {
            if (e.Column.FieldName == "AMOUNT")
            {
                object currency = e.GetFieldValue("DEFAULT_CURRENCY");
                object amount = e.GetFieldValue("AMOUNT");
                e.DisplayText = ((string)GTYPE(currency.ToString()) + amount);

            }
        }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM