DataWindow.NET 控件 在做c#winform 程序時候如何實現電擊列頭排序?

解决方案 »

  1.   

    private void DWSetSort() //数据窗口排序
            {
                try
                {
                    if (this.ib_SetSort == true)
                    {
                        string  ls_CurObj="", ls_CurCol="";
                        int li_LinePos=0;
                        int ll_CurRowNumber = 0;
                        ls_CurObj = dw_1.ObjectUnderMouse.Gob.Name; //得出objectName
                        ll_CurRowNumber = dw_1.ObjectUnderMouse.RowNumber; //得出当前Row                    //li_LinePos = Convert.ToInt32(dw_1.Describe(ls_CurObj + ".X")) + (Convert.ToInt32(dw_1.Describe(ls_CurObj + ".Width")) - 20);
                        if (dw_1.Describe(ls_CurObj + ".Band") == "header")
                        {
                            if (ll_CurRowNumber == 0 & dw_1.Describe(ls_CurObj + ".Text") != "!")
                            {
                                is_OrderCol = ls_CurObj.Substring(0, ls_CurObj.Length - 2);                            if (is_SortType == "A")
                                {
                                    li_LinePos -= 20;
                                    DataWindowSort(dw_1, li_LinePos, is_OrderCol, is_SortType);
                                    is_SortType = "D";
                                }
                                else
                                {
                                    DataWindowSort(dw_1, li_LinePos, is_OrderCol, is_SortType);
                                    is_SortType = "A";                            }
                            }                    }                }
                }
                catch (Exception ex)
                {
                    MessageBox.Show("排序错误!");
                }            finally
                {            }
            }        private Boolean DataWindowSort( Sybase.DataWindow.DataWindowControl ad_DW, int ai_LinePos,string as_Colmun, string as_SortType) //排序的方法
            {
                try
                {
                 //排序  
                    ad_DW.SetSort(as_Colmun + " " + as_SortType);
                    ad_DW.Sort();                //销毁箭头图形
                    //ad_DW.Modify("destroy l_arrowLine_1");
                    //ad_DW.Modify("destroy l_arrowLine_2");
                    //ad_DW.Modify("destroy l_arrowLine_3");                //创建升序的箭头图形
                    string ls_AddLin;
                    switch (as_SortType)
                    {
                        case "A" :
                            //ls_AddLin = "create line(band=Foreground x1='" + Convert.ToString(ai_LinePos) + "' y1='24' x2='" + Convert.ToString(ai_LinePos - 50) + "' y2='24' name=l_arrowLine_1 pen.color='" + Color.FromArgb(0, 0, 0) + "')";
                            //ad_DW.Modify(ls_AddLin);
                            //ls_AddLin = "create line(band=Foreground x1='" + Convert.ToString(ai_LinePos + 5) + "' y1='24' x2='" + Convert.ToString(ai_LinePos - 27) + "' y2='52' name=l_arrowLine_3 pen.color='" + Color.FromArgb(255, 255, 255) + "')";
                            //ad_DW.Modify(ls_AddLin);
                            //ls_AddLin = "create line(band=Foreground x1='" + Convert.ToString(ai_LinePos - 50) + "' y1='24' x2='" + Convert.ToString(ai_LinePos - 23) + "' y2='48' name=l_arrowLine_2 pen.color='" + Color.FromArgb(0, 0, 0) + "')";
                            //ad_DW.Modify(ls_AddLin);
                            break;
                        case "D":
                            //ls_AddLin = "create line(band=Foreground x1='" + Convert.ToString(ai_LinePos) + "' y1='24' x2='" + Convert.ToString(ai_LinePos - 32) + "' y2='52' name=l_arrowLine_1 pen.color='" + Color.FromArgb(0, 0, 0) + "')";
                            //ad_DW.Modify(ls_AddLin);
                            //ls_AddLin = "create line(band=Foreground x1='" + Convert.ToString(ai_LinePos + 5) + "' y1='24' x2='" + Convert.ToString(ai_LinePos - 32) + "' y2='52' name=l_arrowLine_3 pen.color='" + Color.FromArgb(255, 255, 255) + "')";
                            //ad_DW.Modify(ls_AddLin);
                            //ls_AddLin = "create line(band=Foreground x1='" + Convert.ToString(ai_LinePos - 50) + "' y1='48' x2='" + Convert.ToString(ai_LinePos - 27) + "' y2='48' name=l_arrowLine_2 pen.color='" + Color.FromArgb(255, 255, 255) + "')";
                            //ad_DW.Modify(ls_AddLin);
                            break;
                     }
                    return true;
                }
                catch (Exception ex)
                {
                    //MessageBox.Show("排序方法错误!");
                    return false;
                }            finally
                {            }
            }
      

  2.   

    修改楼上的
          1.定义字段         
                    Boolean ib_SetSort = true;
                    string is_SortType = "D";
          2.
                 /// <summary>dw排序
            /// 
            /// </summary>
            /// <param name="sortDW">要排序的dw</param>
            private void DWSetSort(Sybase.DataWindow.DataWindowControl sortDW) //数据窗口排序
            {
                try
                {                
                    string is_OrderCol = "";
                    if (this.ib_SetSort == true)
                    {
                        string ls_CurObj = "";// ls_CurCol = "";
                        int li_LinePos = 0;
                        int ll_CurRowNumber = 0;
                        ls_CurObj = sortDW.ObjectUnderMouse.Gob.Name; //得出objectName
                        ll_CurRowNumber = sortDW.ObjectUnderMouse.RowNumber; //得出当前Row                    //li_LinePos = Convert.ToInt32(sortDW.Describe(ls_CurObj + ".X")) + (Convert.ToInt32(sortDW.Describe(ls_CurObj + ".Width")) - 20);
                        if (sortDW.Describe(ls_CurObj + ".Band") == "header")
                        {
                            if (ll_CurRowNumber == 0 & sortDW.Describe(ls_CurObj + ".Text") != "!")
                            {
                                is_OrderCol = ls_CurObj.Substring(0, ls_CurObj.Length - 2);                            if (is_SortType == "A")
                                {
                                    li_LinePos -= 20;
                                    //DataWindowSort(sortDW, li_LinePos, is_OrderCol, is_SortType);
                                    sortDW.SetSort(is_OrderCol + " " + is_SortType);
                                    sortDW.Sort();
                                    is_SortType = "D";
                                }
                                else
                                {
                                    //DataWindowSort(sortDW, li_LinePos, is_OrderCol, is_SortType);
                                    sortDW.SetSort(is_OrderCol + " " + is_SortType);
                                    sortDW.Sort();
                                    is_SortType = "A";
                                }
                            }                    }                }
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message,"排序错误!");
                }            
            }        3.
                 private void dw_2_Click(object sender, EventArgs e)
                {
                     DWSetSort(dw_2);
                 }