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

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

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

      [Silverlight]奇技銀巧系列-4 在DataGrid中顯示行號

      Silverlight奇技銀巧系列:

      所有該系列中的文章只為介紹一些Silverlight中或隱藏在Silverlight .NET framework鮮為人知的知識和技巧。這些文章并非教程,也是不是什么技術指導,您只需對文章介紹的內容保有印象。這些知識和技巧也許會在不經意間綻放銀色光芒。

      我們通常會碰到在DataGird的第一列(或某一列)自動顯示該行行號的需求,如下圖

      image

      分析這個問題我們需要兩步走

      • 向數據源添加數據時自動顯示行號
      • 從數據源刪除數據時自動更新所有行號

       

      首先做一些準備工作,我們需要為DataGird自定義第一列的單元格

      <data:DataGridTemplateColumn>
          <data:DataGridTemplateColumn.CellTemplate>
              <DataTemplate>
                  <TextBlock />
              </DataTemplate>
          </data:DataGridTemplateColumn.CellTemplate>
      </data:DataGridTemplateColumn>

      很簡單,一個TextBlock而已

      再搞出一個實體類

          public class Person {
              public string FullName { get; set; }
              public int? Age { get; set; }
              public string Gender { get; set; }
          }

      接著定義一個私有變量_personList并在初始化時為其添加幾項以便測試。

      注:_personList是ObservableCollection,以下我們所有的操作都基于ObservableCollection。

      ObservableCollection<Person> _personList;

      _personList = new ObservableCollection<Person> { 
                      new Person(){ FullName="forever",Age=13,Gender="男" },
                      new Person(){ FullName="fish",Age=14,Gender="公"},
                      new Person(){ FullName="SBPP",Age=40,Gender="男"},
                      new Person(){FullName="TNT",Age=null,Gender="男"},
                      new Person(){FullName="SARS",Age=5,Gender="無"},
                  };

       

      接著我們開始解決第一個問題,即添加數據時自動顯示數據行號:

      假設我們有一個按鈕用來向數據源中插入數據,如

              private void btnAdd_Click(object sender, RoutedEventArgs e) {
                  _personList.Add(new Person() { FullName = "Lulu", Age = 18, Gender = "女" });
              }

      為了讓每一行的第一列產生自動編號,我們需要捕獲dataGrid1的LoadingRow事件,如

      dataGrid1.LoadingRow += new EventHandler<DataGridRowEventArgs>(dataGrid1_LoadingRow);

      void dataGrid1_LoadingRow(object sender, DataGridRowEventArgs e) {
          int index = e.Row.GetIndex();
          var cell = dataGrid1.Columns[0].GetCellContent(e.Row) as TextBlock;
          cell.Text = (index + 1).ToString();
      }

      F5運行后點擊增加按鈕,你會發現數據源中新增的數據已經加入到DataGrid的新行中,并且第一列自動顯示了該行的行號。

      現在我們開始解決第二個問題,即從數據源刪除數據時自動更新所有行號

      現在GridView中再自定義一列,每列的顯示一個按鈕用來刪除該條數據

      <data:DataGridTemplateColumn>
          <data:DataGridTemplateColumn.CellTemplate>
              <DataTemplate>
                  <Button Content="刪除" Click="btnDel_Click" />
              </DataTemplate>
          </data:DataGridTemplateColumn.CellTemplate>
      </data:DataGridTemplateColumn>

      然后在.cs中處理btnDel_Click事件

      private void btnDel_Click(object sender, RoutedEventArgs e) {
          var btn = sender as Button;
          var index = _personList.IndexOf(btn.DataContext as Person);
          _personList.RemoveAt(index);
          foreach (var item in dataGrid1.ItemsSource) {
              var txtBlock = dataGrid1.Columns[0].GetCellContent(item) as TextBlock;
              txtBlock.Text = (DataGridRow.GetRowContainingElement(txtBlock).GetIndex() + 1).ToString();
          }
      }

      ok,大功告成。

      如果您有更好的方法,請告訴我,多謝。

      posted @ 2009-12-17 16:20  紫色永恒  閱讀(4769)  評論(17)    收藏  舉報
      主站蜘蛛池模板: 老司机午夜免费精品视频| 粉嫩一区二区三区国产精品| 全免费A级毛片免费看无码| 日韩卡一卡2卡3卡4卡| 白嫩日本少妇做爰| av一本久道久久综合久久鬼色| 影音先锋2020色资源网| 99国产欧美另类久久久精品| 自拍偷拍另类三级三色四色| 自拍亚洲一区欧美另类| 日韩精品一区二区三区中文无码| 4hu四虎永久在线观看| 男人的天堂va在线无码| 日韩精品中文字幕人妻| 制服 丝袜 亚洲 中文 综合| 国产精品一区二区人人爽| 亚洲 中文 欧美 日韩 在线| 无码丰满人妻熟妇区| 精品国产乱子伦一区二区三区 | 欧美精品一产区二产区| 性欧美乱熟妇xxxx白浆| 久久精品无码一区二区三区| 红杏av在线dvd综合| 国产欧美日韩精品第二区| 国产对白老熟女正在播放| 野外做受三级视频| 国产人妻大战黑人第1集| 九九热爱视频精品| 韩国午夜理伦三级| 国产美女午夜福利视频| 久久涩综合一区二区三区| 一本大道无码av天堂| 日韩av一区二区精品不卡| 国产 亚洲 制服 无码 中文| 精品人妻伦一二三区久久aaa片| 不卡一区二区国产精品| 国产精品福利自产拍久久| 成人做受120秒试看试看视频| 国产精品大片中文字幕| 精品国产91久久粉嫩懂色| 深夜福利视频在线播放|