<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      基于ArcGIS10.0和Oracle10g的空間數(shù)據(jù)管理平臺十八(C#開發(fā))-數(shù)據(jù)字典編輯

      我的新浪微博:http://weibo.com/freshairbrucewoo。

      歡迎大家相互交流,共同提高技術。

          今天繼續(xù)接著前面介紹的開發(fā)通用空間數(shù)據(jù)管理平臺這個項目進行講解,今天介紹的內(nèi)容比較簡單,就是通過界面來實現(xiàn)數(shù)據(jù)字典的編輯。至于數(shù)據(jù)字典的概念大家可以網(wǎng)上查找,以前我有一篇博客專門針對這個項目中用到的專業(yè)術語進行過講解,也可以去查看一下。

          介紹的思路還是按照當時自己在實現(xiàn)這個功能的思路,基本上還原當時怎樣一步一步把這個相對簡單的功能實現(xiàn)的。

      1.定義用到的成員變量。

      1. private OracleCommandBuilder builder;//命令構建  
      2. private OracleDataAdapter da;//數(shù)據(jù)適配器  
      3. private DataSet ds;//數(shù)據(jù)集  
      4. private string selectedNodeText;//保存選擇樹形節(jié)點的文本內(nèi)容  
      5. private string tableName;//表的名稱  
      6. protected OracleConnection Connection;//連接數(shù)據(jù)庫  
      7. private bool isChanged = false;//控件中的內(nèi)容是否改變  


      2.在form的裝載函數(shù)中初始化界面的相關控件,讓這些控件都處于一個正常的顯示狀態(tài)并且為后面的操作做好準備。

       

      1. private void DataDictionaryEdit_Load(object sender, EventArgs e)  
      2. {  
      3.     //加載相應的數(shù)據(jù)字典表到Tree  
      4.     Connection = new OracleConnection(ConfigurationSettings.AppSettings["ConnectionString"]);  
      5.   
      6.     Node tn = new Node();  
      7.     tn.Text = "數(shù)據(jù)字典表";  
      8.   
      9.     advTree1.Nodes.Add(tn);  
      10.     Node n1 = new Node();  
      11.     n1.Text = "數(shù)據(jù)分類表";  
      12.     Node n2 = new Node();  
      13.     n2.Text = "要素類別表";  
      14.     Node n3 = new Node();  
      15.     n3.Text = "圖層表";  
      16.     Node n4 = new Node();  
      17.     n4.Text = "字段定義表";  
      18.     tn.Nodes.Add(n1);  
      19.     tn.Nodes.Add(n2);  
      20.     tn.Nodes.Add(n3);  
      21.     tn.Nodes.Add(n4);  
      22. }  


      3.通過樹形控件選擇相應的節(jié)點以后,通過樹形節(jié)點的文字(代表表名稱)選擇一個表的內(nèi)容加載到datagridView控件中,并且實現(xiàn)分頁顯示功能。

      1. //選擇相應的表以后加載數(shù)據(jù)到DataGridView中  
      2. private void advTree1_AfterNodeSelect(object sender, AdvTreeNodeEventArgs e)  
      3. {  
      4.     Node tn = new Node();  
      5.   
      6.     tn = e.Node;  
      7.     selectedNodeText = tn.Text;  
      8.   
      9.     switch (tn.Level)  
      10.     {  
      11.         case 1:  
      12.             labelX1.Text = "";  
      13.             labelX1.Text = "當前數(shù)據(jù)表: " + tn.Text;  
      14.   
      15.             if (Connection.State != ConnectionState.Open)  
      16.             {  
      17.                 Connection.Open();  
      18.             }  
      19.             if (tn.Text == "數(shù)據(jù)分類表")  
      20.             {  
      21.                 tableName = "jcsjk_category";  
      22.             }  
      23.             else if (tn.Text == "要素類別表")  
      24.             {  
      25.                 tableName = "jcsjk_element";  
      26.             }  
      27.             else if (tn.Text == "圖層表")  
      28.             {  
      29.                 tableName = "jcsjk_layer";  
      30.             }  
      31.             else if (tn.Text == "字段定義表")  
      32.             {  
      33.                 tableName = "jcsjk_fielddefine";  
      34.             }  
      35.   
      36.             string sql = "select * from " + tableName;  
      37.             da = new OracleDataAdapter(sql, Connection);  
      38.             builder = new OracleCommandBuilder(da);  
      39.             ds = new DataSet();  
      40.   
      41.             da.Fill(ds, tableName);  
      42.             dataGridViewX1.DataSource = ds.Tables[0];  
      43.   
      44.             int intMod, dgr;  
      45.             //先讓垂直滾動條消失   
      46.             dataGridViewX1.ScrollBars = ScrollBars.Horizontal;  
      47.             //取出DGV的行數(shù),為什么要減一是因為它總是多出一行給你編輯的所以那行也占用一行的空間   
      48.             dgr = dataGridViewX1.RowCount - 1;  
      49.             //進行取模   
      50.             if (dgr % 10 == 0)  
      51.             {  
      52.                 intMod = 0;  
      53.             }  
      54.             else  
      55.             {  
      56.                 intMod = 1;  
      57.             }  
      58.             //主要時這個for循環(huán)將表一共分為幾頁添加到comboBox  
      59.             comboBoxEx1.Items.Clear();  
      60.             for (int i = 1; i <= dgr / 10 + intMod; i++)  
      61.             {  
      62.                 comboBoxEx1.Items.Add("第" + i + "頁");  
      63.             }  
      64.             //默認選中第一個  
      65.             if (comboBoxEx1.Items.Count > 0)  
      66.             {  
      67.                 comboBoxEx1.SelectedIndex = 0;  
      68.             }  
      69.             break;  
      70.         default:  
      71.             break;  
      72.     }  
      73. }  


      4.在控件增加和刪除一條記錄,此時還沒有更新到數(shù)據(jù)庫,需要保持以后才真正進入數(shù)據(jù)庫中,后面一個功能實現(xiàn)。

      1. //刪除一條記錄  
      2. private void delBtn_Click(object sender, EventArgs e)  
      3. {  
      4.     if (!dataGridViewX1.AllowUserToDeleteRows)  
      5.     {  
      6.         dataGridViewX1.AllowUserToDeleteRows = true;  
      7.     }  
      8.     if (dataGridViewX1.CurrentRow.Index < 0)  
      9.     {  
      10.         MessageBox.Show("請選擇需要刪除的一行");  
      11.         return;  
      12.     }  
      13.     isChanged = true;  
      14.     ds.Tables[0].Rows[dataGridViewX1.CurrentRow.Index].Delete();  
      15. }  
      16.   
      17. //增加一條記錄  
      18. private void addBtn_Click(object sender, EventArgs e)  
      19. {  
      20.     if (!dataGridViewX1.AllowUserToAddRows)  
      21.     {  
      22.         dataGridViewX1.AllowUserToAddRows = true;  
      23.     }  
      24.   
      25.     if (dataGridViewX1.ReadOnly)  
      26.     {  
      27.         dataGridViewX1.ReadOnly = false;  
      28.     }  
      29.     isChanged = true;  
      30.     dataGridViewX1.FirstDisplayedScrollingRowIndex =  
      31.         dataGridViewX1.Rows[dataGridViewX1.RowCount - 1].Index;  
      32. }  


      5.把控件中改動、增加或刪除的內(nèi)容更新到數(shù)據(jù)庫中去,可以同時對控件中的內(nèi)容進行增加、刪除和修改,然后一次性更新到數(shù)據(jù)庫,但是每次只能操作一個數(shù)據(jù)字典表。

      1. //修改后的數(shù)據(jù)保存到數(shù)據(jù)庫中去  
      2. private void saveBtn_Click(object sender, EventArgs e)  
      3. {  
      4.     int result = 0;  
      5.     if (isChanged)  
      6.     {  
      7.         try  
      8.         {  
      9.             result = da.Update(ds, tableName);  
      10.         }  
      11.         catch (Exception ex)  
      12.         {  
      13.             MessageBox.Show(ex.Message);  
      14.         }  
      15.     }  
      16.     isChanged = false;  
      17.     dataGridViewX1.ReadOnly = true;  
      18.     dataGridViewX1.AllowUserToAddRows = false;  
      19.     dataGridViewX1.AllowUserToDeleteRows = false;  
      20.   
      21.     if (result > 0)  
      22.     {  
      23.         LogHelp.writeLog(FrmMain.username, "數(shù)據(jù)字典編輯",  
      24.             "數(shù)據(jù)字典" + selectedNodeText + "編輯成功");  
      25.         MessageBox.Show("更新數(shù)據(jù)庫成功");  
      26.     }  
      27.     else  
      28.     {  
      29.         LogHelp.writeLog(FrmMain.username, "數(shù)據(jù)字典編輯",  
      30.             "數(shù)據(jù)字典" + selectedNodeText + "編輯失敗");  
      31.         MessageBox.Show("數(shù)據(jù)庫沒有更新");  
      32.     }  
      33. }  


      6.其他輔助小功能。

      1. //使能編輯  
      2.  private void editBtn_Click(object sender, EventArgs e)  
      3.  {  
      4.      if (dataGridViewX1.ReadOnly)  
      5.      {  
      6.          dataGridViewX1.ReadOnly = false;  
      7.      }  
      8.  }  
      9.   
      10.  //檢查數(shù)據(jù)錄入格式  
      11.  private void dataGridViewX1_DataError(object sender, DataGridViewDataErrorEventArgs e)  
      12.  {  
      13.      labelX2.Text = "數(shù)據(jù)錄入格式不正確";  
      14.  }  
      15.   
      16.  //記錄值是否發(fā)生改變  
      17.  private void dataGridViewX1_CellValueChanged(object sender, DataGridViewCellEventArgs e)  
      18.  {  
      19.      isChanged = true;  
      20.  }  
      21.   
      22.  //DataGridView全部可見  
      23.  private void showAllBtn_Click(object sender, EventArgs e)  
      24.  {  
      25.      dataGridViewX1.ScrollBars = ScrollBars.Both;  
      26.      try  
      27.      {  
      28.          dataGridViewX1.FirstDisplayedScrollingRowIndex = 0;  
      29.      }  
      30.      catch (ArgumentOutOfRangeException)  
      31.      {  
      32.   
      33.      }  
      34.  }  
      35.   
      36.  //顯示第幾頁數(shù)據(jù)  
      37.  private void comboBoxEx1_SelectedIndexChanged(object sender, EventArgs e)  
      38.  {  
      39.      try  
      40.      {  
      41.          dataGridViewX1.FirstDisplayedScrollingRowIndex = comboBoxEx1.SelectedIndex * 10;  
      42.      }  
      43.      catch (ArgumentOutOfRangeException)  
      44.      {  
      45.   
      46.      }  
      47.  }  

          其他功能主要包括:定位顯示第幾頁的數(shù)據(jù)、使能控件可以編輯、輸入控件值的有效性檢查等。

       

      7、總結。

          這里所謂的數(shù)據(jù)字典編輯其實也就是針對幾個表進行操作,和普通的數(shù)據(jù)庫表操作完全一樣,只是根據(jù)功能記錄的數(shù)據(jù)類型不一樣而已,數(shù)據(jù)字典可能聽起來更加專業(yè)一些,它的作用更加突出明顯一些。

      posted @ 2012-02-27 23:49  薔薇理想人生  閱讀(1397)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 午夜三级成人在线观看| 米奇亚洲国产精品思久久| 亚洲人成网站77777在线观看| 亚洲天堂激情av在线| 国产精品中文字幕视频| 丰满少妇高潮在线播放不卡| 丝袜高潮流白浆潮喷在线播放| 秋霞人妻无码中文字幕| 狠狠躁夜夜躁人人爽天天5| 久久99精品久久久久久齐齐| 一区二区三区精品视频免费播放| 男女吃奶做爰猛烈紧视频| 国产桃色在线成免费视频| 人妻中文字幕一区二区三| 亚洲国产成人字幕久久| 欧美性猛交xxxx乱大交丰满| а∨天堂一区中文字幕| 亚洲国产初高中生女av| 成av免费大片黄在线观看| 波多结野衣一区二区三区| 99久久国语露脸精品国产| 久热这里只有精品在线观看| 亚洲欧美成人aⅴ在线| 精品午夜福利无人区乱码| 日韩熟女精品一区二区三区| 国产美女自慰在线观看| 临桂县| 狠狠色噜噜狼狼狼色综合久| 久青草视频在线观看免费| 久久精品国产久精国产一老狼| 亚洲人精品午夜射精日韩| 在线观看成人永久免费网站| 欧美成人午夜在线观看视频| 四虎网址| 久久精品亚洲成在人线av麻豆| 大陆熟妇丰满多毛xxxx| 成人3d动漫一区二区三区| 又湿又紧又大又爽A视频男| 亚洲av噜噜一区二区| 国产91特黄特色A级毛片| 亚洲人成电影网站色mp4|