• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            posts - 124,  comments - 29,  trackbacks - 0

            TCP/UDP協議基礎

            (轉載)

             

              理解數據包,對于網絡管理的網絡安全具有至關重要的意義。比如,防火墻的作用本質就是檢測網絡中的數據包,判斷其是否違反了預先設置的規則,如果違反就加以阻止。圖1就是瑞星個人版防火墻軟件設置規則的界面。細心的讀者會發現,圖1中的“協議”欄中有“TCP”、“UDP”等名詞,它們是什么意思呢?現在我們就來講講什么是TCP和UDP。

              面向連接的TCP

              “面向連接”就是在正式通信前必須要與對方建立起連接。比如你給別人打電話,必須等線路接通了、對方拿起話筒才能相互通話。

              TCP(Transmission Control Protocol,傳輸控制協議)是基于連接的協議,也就是說,在正式收發數據前,必須和對方建立可靠的連接。一個TCP連接必須要經過三次“對話”才能建立起來,其中的過程非常復雜,我們這里只做簡單、形象的介紹,你只要做到能夠理解這個過程即可。我們來看看這三次對話的簡單過程:主機A向主機B發出連接請求數據包:“我想給你發數據,可以嗎?”,這是第一次對話;主機B向主機A發送同意連接和要求同步(同步就是兩臺主機一個在發送,一個在接收,協調工作)的數據包:“可以,你什么時候發?”,這是第二次對話;主機A再發出一個數據包確認主機B的要求同步:“我現在就發,你接著吧!”,這是第三次對話。三次“對話”的目的是使數據包的發送和接收同步,經過三次“對話”之后,主機A才向主機B正式發送數據。

              TCP協議能為應用程序提供可靠的通信連接,使一臺計算機發出的字節流無差錯地發往網絡上的其他計算機,對可靠性要求高的數據通信系統往往使用TCP協議傳輸數據。


            圖2

              我們來做一個實驗,用計算機A(安裝Windows 2000 Server操作系統)從“網上鄰居”上的一臺計算機B拷貝大小為8,644,608字節的文件,通過狀態欄右下角網卡的發送和接收指標就會發現:雖然是數據流是由計算機B流向計算機A,但是計算機A仍發送了3,456個數據包,如圖2所示。這些數據包是怎樣產生的呢?因為文件傳輸時使用了TCP/IP協議,更確切地說是使用了面向連接的TCP協議,計算機A接收數據包的時候,要向計算機B回發數據包,所以也產生了一些通信量。


            圖3

              如果事先用網絡監視器監視網絡流量,就會發現由此產生的數據流量是9,478,819字節,比文件大小多出10.96%(如圖3所示),原因不僅在于數據包和幀本身占用了一些空間,而且也在于TCP協議面向連接的特性導致了一些額外的通信量的產生。

              面向非連接的UDP協議

              “面向非連接”就是在正式通信前不必與對方先建立連接,不管對方狀態就直接發送。這與現在風行的手機短信非常相似:你在發短信的時候,只需要輸入對方手機號就OK了。

              UDP(User Data Protocol,用戶數據報協議)是與TCP相對應的協議。它是面向非連接的協議,它不與對方建立連接,而是直接就把數據包發送過去!


            圖4

              UDP適用于一次只傳送少量數據、對可靠性要求不高的應用環境。比如,我們經常使用“ping”命令來測試兩臺主機之間TCP/IP通信是否正常,其實“ping”命令的原理就是向對方主機發送UDP數據包,然后對方主機確認收到數據包,如果數據包是否到達的消息及時反饋回來,那么網絡就是通的。例如,在默認狀態下,一次“ping”操作發送4個數據包(如圖2所示)。大家可以看到,發送的數據包數量是4包,收到的也是4包(因為對方主機收到后會發回一個確認收到的數據包)。這充分說明了UDP協議是面向非連接的協議,沒有建立連接的過程。正因為UDP協議沒有連接的過程,所以它的通信效果高;但也正因為如此,它的可靠性不如TCP協議高。QQ就使用UDP發消息,因此有時會出現收不到消息的情況。

              附表:tcp協議和udp協議的差別

              TCP協議和UDP協議各有所長、各有所短,適用于不同要求的通信環境。TCP協議和UDP協議之間的差別如附表所示。

            posted @ 2010-06-04 14:05 天書 閱讀(2282) | 評論 (0)編輯 收藏

            TCP/UDP協議基礎

            (轉載)

             

              理解數據包,對于網絡管理的網絡安全具有至關重要的意義。比如,防火墻的作用本質就是檢測網絡中的數據包,判斷其是否違反了預先設置的規則,如果違反就加以阻止。圖1就是瑞星個人版防火墻軟件設置規則的界面。細心的讀者會發現,圖1中的“協議”欄中有“TCP”、“UDP”等名詞,它們是什么意思呢?現在我們就來講講什么是TCP和UDP。

              面向連接的TCP

              “面向連接”就是在正式通信前必須要與對方建立起連接。比如你給別人打電話,必須等線路接通了、對方拿起話筒才能相互通話。

              TCP(Transmission Control Protocol,傳輸控制協議)是基于連接的協議,也就是說,在正式收發數據前,必須和對方建立可靠的連接。一個TCP連接必須要經過三次“對話”才能建立起來,其中的過程非常復雜,我們這里只做簡單、形象的介紹,你只要做到能夠理解這個過程即可。我們來看看這三次對話的簡單過程:主機A向主機B發出連接請求數據包:“我想給你發數據,可以嗎?”,這是第一次對話;主機B向主機A發送同意連接和要求同步(同步就是兩臺主機一個在發送,一個在接收,協調工作)的數據包:“可以,你什么時候發?”,這是第二次對話;主機A再發出一個數據包確認主機B的要求同步:“我現在就發,你接著吧!”,這是第三次對話。三次“對話”的目的是使數據包的發送和接收同步,經過三次“對話”之后,主機A才向主機B正式發送數據。

              TCP協議能為應用程序提供可靠的通信連接,使一臺計算機發出的字節流無差錯地發往網絡上的其他計算機,對可靠性要求高的數據通信系統往往使用TCP協議傳輸數據。


            圖2

              我們來做一個實驗,用計算機A(安裝Windows 2000 Server操作系統)從“網上鄰居”上的一臺計算機B拷貝大小為8,644,608字節的文件,通過狀態欄右下角網卡的發送和接收指標就會發現:雖然是數據流是由計算機B流向計算機A,但是計算機A仍發送了3,456個數據包,如圖2所示。這些數據包是怎樣產生的呢?因為文件傳輸時使用了TCP/IP協議,更確切地說是使用了面向連接的TCP協議,計算機A接收數據包的時候,要向計算機B回發數據包,所以也產生了一些通信量。


            圖3

              如果事先用網絡監視器監視網絡流量,就會發現由此產生的數據流量是9,478,819字節,比文件大小多出10.96%(如圖3所示),原因不僅在于數據包和幀本身占用了一些空間,而且也在于TCP協議面向連接的特性導致了一些額外的通信量的產生。

              面向非連接的UDP協議

              “面向非連接”就是在正式通信前不必與對方先建立連接,不管對方狀態就直接發送。這與現在風行的手機短信非常相似:你在發短信的時候,只需要輸入對方手機號就OK了。

              UDP(User Data Protocol,用戶數據報協議)是與TCP相對應的協議。它是面向非連接的協議,它不與對方建立連接,而是直接就把數據包發送過去!


            圖4

              UDP適用于一次只傳送少量數據、對可靠性要求不高的應用環境。比如,我們經常使用“ping”命令來測試兩臺主機之間TCP/IP通信是否正常,其實“ping”命令的原理就是向對方主機發送UDP數據包,然后對方主機確認收到數據包,如果數據包是否到達的消息及時反饋回來,那么網絡就是通的。例如,在默認狀態下,一次“ping”操作發送4個數據包(如圖2所示)。大家可以看到,發送的數據包數量是4包,收到的也是4包(因為對方主機收到后會發回一個確認收到的數據包)。這充分說明了UDP協議是面向非連接的協議,沒有建立連接的過程。正因為UDP協議沒有連接的過程,所以它的通信效果高;但也正因為如此,它的可靠性不如TCP協議高。QQ就使用UDP發消息,因此有時會出現收不到消息的情況。

              附表:tcp協議和udp協議的差別

              TCP協議和UDP協議各有所長、各有所短,適用于不同要求的通信環境。TCP協議和UDP協議之間的差別如附表所示。

            posted @ 2010-06-04 14:05 天書 閱讀(310) | 評論 (0)編輯 收藏

             //設置textbox每行最多顯示固定個字符
                    public static void SetTextBoxColumn(TextBox textBox1, int charCount)
                    {
                        try
                        {
                            for (int i = 0; i < textBox1.Lines.Length; i++)
                            {
                                if (textBox1.Lines[i].Length > charCount)
                                {
                                    int firstCharIndex = textBox1.GetFirstCharIndexFromLine(i);
                                    string str = textBox1.Lines[i];
                                    textBox1.Text = textBox1.Text.Insert(firstCharIndex + charCount, "\r\n");

                                }
                            }
                        }
                        catch { }
                    }

            posted @ 2010-05-17 16:05 天書 閱讀(1022) | 評論 (0)編輯 收藏
            private void textBox1_KeyDown(object sender, KeyEventArgs e)
                    {
                       
                        if (e.KeyCode == Keys.Enter)
                        {
                            e.SuppressKeyPress = true;
                            
                        }
                    }
            posted @ 2010-05-07 19:19 天書 閱讀(1344) | 評論 (0)編輯 收藏

            using System;
            using System.Collections.Generic;
            using System.ComponentModel;
            using System.Data;
            using System.Drawing;
            using System.Text;
            using System.Windows.Forms;
            using DevExpress.XtraCharts;

            namespace ChartControl
            {
                public partial class Form1 : Form
                {
                    public Form1()
                    {
                        InitializeComponent();
                    }

                    private Dictionary<string, double> chartPieDataDic = new Dictionary<string, double>();
                    private Dictionary<string, double> chartBarDataDic = new Dictionary<string, double>();
                    private void Form1_Load(object sender, EventArgs e)
                    {
                        comboBox1.SelectedIndex = 0;
                        InitPieChartData();
                        InitBarChartData();
                        showPie();
                       
                    }
                    private void showPie()
                    {
                        ChartTitle title = new ChartTitle();
                        title.Text = "全省話務分析餅圖-話務類型分布";

                        chartControl1.Titles.Clear();
                        chartControl1.Titles.Add(title);

                        Series series1 = new Series("話務類型", ViewType.Pie);
                        ((PiePointOptions)series1.PointOptions).PointView = PointView.ArgumentAndValues;

                        foreach (KeyValuePair<string, double> keyvalue in chartPieDataDic)
                        {
                            series1.Points.Add(new SeriesPoint(keyvalue.Key, new double[] { keyvalue.Value }));
                        }

                        chartControl1.Series.Clear();
                        chartControl1.Series.Add(series1);
                    }

                    private void InitPieChartData()
                    {
                        try
                        {
                            chartPieDataDic.Add("大連", 0.2);
                            chartPieDataDic.Add("沈陽", 0.26);
                            chartPieDataDic.Add("錦州", 0.15);
                            chartPieDataDic.Add("盤錦", 0.15);
                            chartPieDataDic.Add("本溪", 0.1);
                            chartPieDataDic.Add("撫順", 0.12);
                            chartPieDataDic.Add("營口", 0.02);
                        }
                        catch { }
                    }
                    private void InitBarChartData()
                    {
                        try
                        {
                            chartBarDataDic.Add("2001", 0.05);
                            chartBarDataDic.Add("2002", 0.02);
                            chartBarDataDic.Add("2003", 0.08);
                            chartBarDataDic.Add("2004", 0.15);
                            chartBarDataDic.Add("2005", 0.1);
                            chartBarDataDic.Add("2006", 0.3);
                            chartBarDataDic.Add("2007", 0.2);
                            chartBarDataDic.Add("2008", 0.1);
                        }
                        catch { }
                    }
                    private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
                    {
                        if (comboBox1.Text.IndexOf("餅圖") != -1)
                        {
                            showPie();
                        }
                        else if (comboBox1.Text.IndexOf("柱圖") != -1)
                        {
                            showBar();
                        }
                        else if (comboBox1.Text.IndexOf("線圖") != -1)
                        {
                            showLine();
                        }
                        else if (comboBox1.Text.IndexOf("點圖") != -1)
                        {
                            showPoint();
                        }
                    }

                    private void showBar()
                    {
                        try
                        {
                            ChartTitle title = new ChartTitle();
                            title.Text = "市網元容量增長率統計分析柱圖";

                            chartControl1.Titles.Clear();
                            chartControl1.Titles.Add(title);

                            Series series2 = new Series("大連", ViewType.Bar);
                            Series series3 = new Series("沈陽", ViewType.Bar);
                            Series series4 = new Series("本溪", ViewType.Bar);
                            foreach (KeyValuePair<string, double> kvp in chartBarDataDic)
                            {
                                series2.Points.Add(new SeriesPoint(kvp.Key, new double[] {kvp.Value}));
                                series3.Points.Add(new SeriesPoint(kvp.Key, new double[] {kvp.Value + 0.08}));
                                series4.Points.Add(new SeriesPoint(kvp.Key, new double[] {kvp.Value + 0.02}));
                            }


                            chartControl1.Series.Clear();
                            chartControl1.Series.Add(series2);
                            chartControl1.Series.Add(series3);
                            chartControl1.Series.Add(series4);

                            chartControl1.Legend.Visible = true; // 顯示標簽(旁邊的標注哪個顏色代表哪個城市)
                        }
                        catch { }
                    }

                    private void showLine()
                    {
                        ChartTitle title = new ChartTitle();
                        title.Text = "線圖";
                        chartControl1.Titles.Clear();
                        chartControl1.Titles.Add(title);

                        Series series1 = new Series("遼寧", ViewType.Line);
                        series1.ArgumentScaleType = ScaleType.Numerical;

                        series1.Points.Add(new SeriesPoint(1, new double[] { 10 }));
                        series1.Points.Add(new SeriesPoint(2, new double[] { 12 }));
                        series1.Points.Add(new SeriesPoint(3, new double[] { 14 }));
                        series1.Points.Add(new SeriesPoint(4, new double[] { 17 }));
                        series1.Points.Add(new SeriesPoint(5, new double[] { 21 }));
                        series1.Points.Add(new SeriesPoint(6, new double[] { 26 }));
                        series1.Points.Add(new SeriesPoint(7, new double[] { 29 }));
                        series1.Points.Add(new SeriesPoint(8, new double[] { 30 }));

                        ((PointSeriesView)series1.View).PointMarkerOptions.Kind = MarkerKind.Triangle;


                        Series series2 = new Series("山東", ViewType.Line);
                        series2.ArgumentScaleType = ScaleType.Numerical; //這句話必須有,否則點畫不出來.
                        ((LineSeriesView)series2.View).LineStyle.DashStyle = DashStyle.DashDotDot;
                        series2.Points.Add(new SeriesPoint(1, new double[] { 4 }));
                        series2.Points.Add(new SeriesPoint(2, new double[] { 14 }));
                        series2.Points.Add(new SeriesPoint(3, new double[] { 17 }));
                        series2.Points.Add(new SeriesPoint(4, new double[] { 22 }));
                        series2.Points.Add(new SeriesPoint(5, new double[] { 20 }));
                        series2.Points.Add(new SeriesPoint(6, new double[] { 15 }));
                        series2.Points.Add(new SeriesPoint(7, new double[] { 18 }));
                        series2.Points.Add(new SeriesPoint(8, new double[] { 11 }));

                        ((PointSeriesView)series2.View).PointMarkerOptions.Kind = MarkerKind.Cross;

                        chartControl1.Series.Clear();
                        chartControl1.Series.Add(series1);
                        chartControl1.Series.Add(series2);
                        chartControl1.Legend.Visible = true;
                    }
                    private void showPoint()
                    {
                        ChartTitle title = new ChartTitle();
                        title.Text = "點圖";
                        chartControl1.Titles.Clear();
                        chartControl1.Titles.Add(title);

                        Series series1 = new Series("上線人數", ViewType.Point);
                        series1.ArgumentScaleType = ScaleType.Numerical;

                        series1.Points.Add(new SeriesPoint(1, new double[] { 20 }));
                        series1.Points.Add(new SeriesPoint(2, new double[] { 12 }));
                        series1.Points.Add(new SeriesPoint(3, new double[] { 11 }));
                        series1.Points.Add(new SeriesPoint(4, new double[] { 17 }));
                        series1.Points.Add(new SeriesPoint(5, new double[] { 21 }));
                        series1.Points.Add(new SeriesPoint(6, new double[] { 21 }));
                        series1.Points.Add(new SeriesPoint(7, new double[] { 29 }));
                        series1.Points.Add(new SeriesPoint(8, new double[] { 30 }));

                        ((PointSeriesView)series1.View).PointMarkerOptions.Kind = MarkerKind.Triangle;


                        Series series2 = new Series("下線人數", ViewType.Point);
                        series2.ArgumentScaleType = ScaleType.Numerical; //這句話必須有,否則點畫不出來.

                        series2.Points.Add(new SeriesPoint(1, new double[] { 4 }));
                        series2.Points.Add(new SeriesPoint(2, new double[] { 14 }));
                        series2.Points.Add(new SeriesPoint(3, new double[] { 17 }));
                        series2.Points.Add(new SeriesPoint(4, new double[] { 22 }));
                        series2.Points.Add(new SeriesPoint(5, new double[] { 20 }));
                        series2.Points.Add(new SeriesPoint(6, new double[] { 15 }));
                        series2.Points.Add(new SeriesPoint(7, new double[] { 18 }));
                        series2.Points.Add(new SeriesPoint(8, new double[] { 11 }));

                        ((PointSeriesView)series2.View).PointMarkerOptions.Kind = MarkerKind.Cross;

                        chartControl1.Series.Clear();
                        chartControl1.Series.Add(series1);
                        chartControl1.Series.Add(series2);
                        chartControl1.Legend.Visible = true;
                    }
                }
            }

            posted @ 2010-05-07 16:09 天書 閱讀(9941) | 評論 (0)編輯 收藏
            <?xml version="1.0" encoding="GB2312"?>
            <Head>
            <Column DisTitle="報表名" DisWidth="150">
              
            <Field>tableCName</Field> 
              
            <Type>string</Type>
              
            <Visible>true</Visible>
            </Column>
            <Column DisTitle="表英文名" DisWidth="0">
              
            <Field>tableEName</Field> 
              
            <Type>string</Type> 
              
            <Visible>false</Visible>
            </Column>
            <Column DisTitle="數據開始時間" DisWidth="150">
                
            <Field>databtime</Field> 
                
            <Type>string</Type> 
                
            <Visible>true</Visible> 
            </Column>
            <Column DisTitle="數據結束時間" DisWidth="150">
                
            <Field>dataetime</Field> 
                
            <Type>string</Type> 
                
            <Visible>true</Visible> 
            </Column>
            <Column DisTitle="匯總是否成功" DisWidth="300">
              
            <Field>collectSuccess</Field> 
              
            <Type>string</Type> 
              
            <Visible>true</Visible>
            </Column>
            <Column DisTitle="是否存在風險" DisWidth="100">
              
            <Field>containDanger</Field> 
              
            <Type>string</Type> 
              
            <Visible>true</Visible>
            </Column>
            <Column DisTitle="表描述" DisWidth="300">
              
            <Field>discription</Field> 
              
            <Type>string</Type> 
              
            <Visible>true</Visible>
            </Column>
            </Head>
                public static List<MyColumn> GetColumnInfo(string fileName, string Node)
                    {
                        
            try
                        {
                            
            string xmlFile = String.Format("{0}\\{1}", System.Windows.Forms.Application.StartupPath, fileName);

                            XmlDocument xmldoc 
            = new XmlDocument();
                            xmldoc.Load(xmlFile);
                            
            if (xmldoc != null)
                            {
                                XmlNode colnode 
            = xmldoc.SelectSingleNode(Node);
                                
            if (colnode != null)
                                {
                                    List
            <MyColumn> cols = new List<MyColumn>();
                                    
            foreach (XmlNode headnode in colnode.ChildNodes)
                                    {
                                        MyColumn col 
            = new MyColumn();
                                        col.Caption 
            = headnode.Attributes["DisTitle"].Value;
                                        col.Width 
            = Convert.ToInt32(headnode.Attributes["DisWidth"].Value);
                                        col.FieldName 
            = headnode.SelectSingleNode("Field").InnerText;
                                        col.Visible 
            = Convert.ToBoolean(headnode.SelectSingleNode("Visible").InnerText);


                                        
            string type = headnode.SelectSingleNode("Type").InnerText;

                                        
            if (String.Compare(type, "int"true== 0 || String.Compare(type, "long"true== 0 || String.Compare(type, "short"true== 0)
                                        {
                                            col.colType 
            = Type.GetType("System.Int64");
                                        }
                                        
            else if (String.Compare(type, "double"true== 0)
                                        {
                                            col.colType 
            = Type.GetType("System.Double");
                                        }
                                        
            else
                                        {
                                            col.colType 
            = Type.GetType("System.String");
                                        }
                                        cols.Add(col);
                                    }

                                    
            return cols;
                                }
                            }
                            
            return null;
                        }
                        
            catch(Exception ex)
                        {
                            MessageBox.Show(ex.Message 
            + ex.StackTrace);
                            
            return null;
                        }
                    }
            posted @ 2010-04-23 12:00 天書 閱讀(455) | 評論 (0)編輯 收藏
            行款不要設置成自動
            列寬要設置成自動
            posted @ 2010-04-23 11:57 天書 閱讀(2980) | 評論 (1)編輯 收藏
            原因在于接口函數中沒有用到該類型(也就是說在所有的接口函數中都沒有用到這個類型)
            posted @ 2010-04-22 15:22 天書 閱讀(275) | 評論 (0)編輯 收藏
            1: 加GridLevelNode時注意加的位置!!!   不能一味的往頂層節點上加!
             2:一定要把新建的 view放到 viewCollection里面. this.gridControlUserTable.ViewCollection.Add(newGridView)
            3:新建的關系名一定要和新建的level保持一致!!!!
            4:注意GridView的更新(父GridView的更新)
              private void gridControlUserTable_DoubleClick(object sender, EventArgs e)
                    {
                        try
                        {
                            //gridView  datatable  GridLevelNode都用同一個名字
                            //ViewCaption中放類別, 1, 用戶相關表.  0, 用戶無關表
                            GridView curView = (DevExpress.XtraGrid.Views.Grid.GridView)gridControlUserTable.FocusedView; //當前的GridView
                            curView.MasterRowExpanding += new MasterRowCanExpandEventHandler(curView_MasterRowExpanding);
                            curView.MasterRowExpanded += new CustomMasterRowEventHandler(curView_MasterRowExpanded);


                            string viewName = curView.Name;
                            string id = "view" + icount.ToString();
                            int ihandle = curView.FocusedRowHandle; //當前的行號
                            DataRow dr = curView.GetDataRow(ihandle); //當前的行


                            GridView newGridView = null;
                            DataTable newDataTable = null;
                            DevExpress.XtraGrid.GridLevelNode gridLevel = null;
                            icount++;
                            #region 頂層的gridView
                            if (curView.Name == "gridViewParent")//頂層的gridView
                            {
                                string tableEName = dr["tableEName"].ToString();
                                string supplierRelated = dr["supplierRelated"].ToString();

                                #region 頂層
                                newGridView = new GridView();
                                newGridView.Name = id;
                                newGridView.OptionsView.ShowGroupPanel = false;
                                newGridView.OptionsBehavior.Editable = false;
                                newGridView.OptionsDetail.ShowDetailTabs = false;
                                newGridView.OptionsCustomization.AllowColumnMoving = false;
                                newGridView.OptionsBehavior.AutoExpandAllGroups = true;
                                this.gridControlUserTable.ViewCollection.Add(newGridView);

                                RelatedTableRecord[] relatedTableInfoArray = null;
                                UnrelatedTableRecord[] unRelatedTableInfoArray = null;
                                if (supplierRelated == "1")//廠商相關
                                {

                                    relatedTableInfoArray = PublicFunction.GetRelatedTableInfos(tableEName, btime, etime);
                                    if (relatedTableInfoArray == null || relatedTableInfoArray.Length == 0)
                                    {
                                        return;
                                    }
                                    CollectCommon.SetGridViewColumn(newGridView, "Config\\CollectMonitor\\supplierRelatedColumn.xml", "/Head");
                                    newGridView.ViewCaption = "1";
                                }
                                else if (supplierRelated == "0")//廠商無關
                                {

                                    unRelatedTableInfoArray = PublicFunction.GetUnRelatedTableInfos(tableEName, "", btime, etime);
                                    if (unRelatedTableInfoArray == null || unRelatedTableInfoArray.Length == 0)
                                    {
                                        return;
                                    }
                                    CollectCommon.SetGridViewColumn(newGridView, "Config\\CollectMonitor\\supplierUnRelatedColumn.xml", "/Head");
                                    newGridView.ViewCaption = "0";
                                }

                                newDataTable = new DataTable(id);
                                CollectCommon.SetDataTableColumn(newGridView, newDataTable);
                                if (supplierRelated == "1")//廠商相關
                                {
                                    CollectCommon.FillTableData(newDataTable, relatedTableInfoArray);
                                }
                                else//廠商無關
                                {
                                    CollectCommon.FillTableData(newDataTable, unRelatedTableInfoArray);
                                }
                                ds.Tables.Add(newDataTable);

                                gridLevel = new DevExpress.XtraGrid.GridLevelNode();
                                gridLevel.LevelTemplate = newGridView;
                                gridLevel.RelationName = id;

                                gridControlUserTable.LevelTree.Nodes.Add(gridLevel);

                                DataRelation dataRelation = new DataRelation(id, ds.Tables["parent"].Columns["tableEName"], ds.Tables[id].Columns["tableEName"], false);
                                ds.Relations.Add(dataRelation);

                                newGridView.RefreshData();
                                gridViewParent.RefreshData();

                                #endregion
                            }
                            #endregion
                            #region 非頂層表
                            else//非頂層表
                            {
                                if (curView.ViewCaption == "1")//廠商相關表,再鉆取最后一層,廠商無關的信息表,就鉆取到頭了.
                                {
                                    #region
                                    string tableEName = dr["tableEName"].ToString();
                                    string supplier = dr["supplier"].ToString();
                                    UnrelatedTableRecord[] unRelatedTableInfoArray = null;
                                    unRelatedTableInfoArray = PublicFunction.GetUnRelatedTableInfos(tableEName, supplier, btime, etime);
                                    if (unRelatedTableInfoArray == null || unRelatedTableInfoArray.Length == 0)
                                    {
                                        return;
                                    }
                                    newGridView = new GridView();
                                    newGridView.Name = id;
                                    newGridView.OptionsView.ShowGroupPanel = false;
                                    newGridView.OptionsBehavior.Editable = false;
                                    newGridView.OptionsDetail.ShowDetailTabs = false;
                                    newGridView.OptionsCustomization.AllowColumnMoving = false;
                                    newGridView.OptionsBehavior.AutoExpandAllGroups = true;
                                    newGridView.ViewCaption = "0";
                                    this.gridControlUserTable.ViewCollection.Add(newGridView);

                                    CollectCommon.SetGridViewColumn(newGridView, "Config\\CollectMonitor\\supplierUnRelatedColumn.xml", "/Head");

                                    newDataTable = new DataTable(id);
                                    CollectCommon.SetDataTableColumn(newGridView, newDataTable);
                                    CollectCommon.FillTableData(newDataTable, unRelatedTableInfoArray);

                                    ds.Tables.Add(newDataTable);

                                    gridLevel = new DevExpress.XtraGrid.GridLevelNode();
                                    gridLevel.LevelTemplate = newGridView;
                                    gridLevel.RelationName = id;

                                    string parentTableName = curView.Name;
                                    string parentLevelName = curView.Name;

                                    //AddGridLevelNode(gridControlUserTable, parentLevelName, gridLevel);
                                    
                                    gridControlUserTable.LevelTree.Nodes[0].Nodes.Add(gridLevel);

                                    DataColumn[] parentColumns = new DataColumn[2];
                                    DataColumn[] childColumns = new DataColumn[2];
                                    parentColumns[0] = ds.Tables[parentTableName].Columns["tableEName"];
                                    parentColumns[1] = ds.Tables[parentTableName].Columns["supplier"];


                                    childColumns[0] = ds.Tables[id].Columns["tableEName"];
                                    childColumns[1] = ds.Tables[id].Columns["supplier"];

                                    DataRelation dataRelation = new DataRelation(id, parentColumns, childColumns, false);
                                    //DataRelation dataRelation = new DataRelation(id, parentColumns[0], childColumns[0], false);
                                    ds.Relations.Add(dataRelation);
                                    curView.RefreshData();
                                    
                                    #endregion
                                }
                                else if (curView.ViewCaption == "0")//廠商無關表
                                {

                                }
                            }
                            #endregion
                        }
                        catch (Exception ex)
                        {
                            MessageBox.Show(ex.Message + ex.StackTrace);
                        }
                    }
            posted @ 2010-04-17 18:04 天書 閱讀(4355) | 評論 (0)編輯 收藏
            原因:
            IE瀏覽器設代理了,把代理去掉就能調起來了。

            posted @ 2010-03-15 13:49 天書 閱讀(289) | 評論 (0)編輯 收藏
            僅列出標題
            共13頁: 1 2 3 4 5 6 7 8 9 Last 

            <2008年10月>
            2829301234
            567891011
            12131415161718
            19202122232425
            2627282930311
            2345678

            常用鏈接

            留言簿(5)

            隨筆檔案

            文章分類

            文章檔案

            好友的Bolg

            搜索

            •  

            最新評論

            閱讀排行榜

            評論排行榜

            久久青青草原国产精品免费| 乱亲女H秽乱长久久久| 办公室久久精品| 精品欧美一区二区三区久久久| 亚洲国产天堂久久综合网站| 久久久不卡国产精品一区二区| 久久丫忘忧草产品| 国产精品久久久久AV福利动漫 | 久久久噜噜噜久久| 免费精品久久天干天干| 国产精品久久久久久久久免费| 久久中文精品无码中文字幕| 伊人久久大香线蕉综合Av | 久久嫩草影院免费看夜色| 久久婷婷五月综合97色直播| 国产午夜久久影院| 狠狠色丁香久久婷婷综合图片| 国产精品一区二区久久精品| 偷窥少妇久久久久久久久| 色综合久久天天综合| 久久婷婷五月综合国产尤物app| 久久久久国产亚洲AV麻豆| 午夜不卡久久精品无码免费| 久久久久久国产精品无码下载 | 久久er国产精品免费观看8| 99久久久精品免费观看国产| 久久久久久曰本AV免费免费| 欧美一级久久久久久久大片| 国产精品无码久久四虎| 国产精品99精品久久免费| 亚洲αv久久久噜噜噜噜噜| 欧美亚洲国产精品久久高清| 精品久久久一二三区| 日韩久久无码免费毛片软件| 久久精品国产99国产精品| 久久99亚洲综合精品首页| 国产呻吟久久久久久久92| 日本久久久久久中文字幕| 国产精品免费看久久久香蕉| 青青草国产精品久久| 一本久久久久久久|