C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

ログ内検索
  • キーワードを複数指定する場合は 半角スペース で区切ってください。
  • 検索条件は、(AND)=[A かつ B] (OR)=[A または B] となっています。
  • [返信]をクリックすると返信ページへ移動します。
キーワード/ 検索条件 /
検索範囲/ 強調表示/ ON (自動リンクOFF)
結果表示件数/ 記事No検索/ ON
大文字と小文字を区別する

全過去ログを検索

<< 0 >>
■48181  ファイルのコピー・移動について
□投稿者/ 中の上くらいの初心者 -(2010/03/26(Fri) 15:15:32)

    分類:[VB.NET/VB2005 以降] 

     vb2008で学習している者です。
     今、あるディレクトリの中にあるファイルの一覧を製作し、そこからその読み込んだパスを使って、
    違うディレクトリにそのファイルを保存・移動できるようにしたいと考えております。
     一覧を作るコードは組めたのですが、そのあと、違うディレクトリに保存・移動するコードがわかりません。
     自分なりに、いろいろ調べてみたのですが、やっぱりわかりません。
     多少やさしめにおしえてください。お願いします。
親記事 /過去ログ81より / 関連記事表示
削除チェック/

■84132  Re[4]: 多階層のxmlのDataTableへの読み書きについて
□投稿者/ なと -(2017/05/18(Thu) 21:40:02)
    No84128 (魔界の仮面弁士 さん) に返信
    
    頂いた情報を元に、いろいろ検索して勉強中です・・
    仰る通り複数形はChildrenでしたね(笑)
    
    XMLから読んだDataSetをBindingSourceとDataMemberに割り当てるときのプロパティがよく分からず、
    ウォッチでプロパティ漁っていますが中々当たりません。取り敢えず、BindingSourceは置いといて
    
    Parentはそのまま
    bsp = ds.Tables[tableName];
    dgvp.DataSurce = bsp;
    dgvp.DataMember = "Parent";
    ですよね。
    
    Childは
    ds.Tables["Parent"].Rows[0].GetChildRows("Parent_Children")[0]をそのままDataSurceに入れても関係のない列が出てきてしまったので
    DataTable tblChild = ds.Tables["Parent"].Rows[0].GetChildRows("Parent_Children")[0].GetChildRows("Children_Child")[0].Table;
    dgvc.DataSource = tblChild ;
    としたらそれっぽいのが出ました。
    
    しかし実際には
    DataTable tblGrand = tblChild.Rows[0].GetChildRows("Child_Grandsons")[0].GetChildRows("Grandsons_Grandson")[0].Table;
    dgvg.DataSource = tblGrand ;
    とすると孫1,孫2、孫1、孫2と出て来てしまいました。
    
    なにがダメなんでしょう・・・?
    
    
    検索していたら過去に魔界の仮面弁士さんが書かれているコレが目指している動きと同じような気がします。
    https://social.msdn.microsoft.com/Forums/ja-JP/7440f652-65c3-499c-aacc-4fb6684a6d15/dataviewdatagridviewdatagridview?forum=csharpgeneralja
    とりあえずコレをXML化すれば緒が見つかるかなと・・・頑張ってみます。
    
記事No.84124 のレス /過去ログ143より / 関連記事表示
削除チェック/

■84134  Re[5]: 多階層のxmlのDataTableへの読み書きについて
□投稿者/ 魔界の仮面弁士 -(2017/05/18(Thu) 23:54:03)
    No84132 (なと さん) に返信
    > Parentはそのまま
    > bsp = ds.Tables[tableName];
    > dgvp.DataSurce = bsp;
    > dgvp.DataMember = "Parent";
    > ですよね。

    違います。
    それだと『フィールド Parent の子リストを作成できません。』などのエラーとなる可能性があります。

    上記の dgvp というのは、Parent 用の DataGridView を
    指しているのだと思いますが(DataSurce → DataSource というのはさておき)、
    Parent 行を DataGridView に表示するだけなら、
      // DataMember は空のまま
      dataGridView1.DataSource = ds.Tables["Parent"];
    もしくは
      dataGridView1.DataSource = ds;
      dataGridView1.DataMember = "Parent" ;
    です。



    > XMLから読んだDataSetをBindingSourceとDataMemberに割り当てるときのプロパティがよく分からず、

    とりあえずこんな感じ。空のフォームに貼って試してみてください。
    ここでは説明のため、コントロールの配置やイベントの割り当ても、サンプルコード中で行っています。
    (実際の開発には、コントロール等をデザイン時に配置しておくことができます)

    親・子・孫という 3 つの DataGridView を並べてありますが、それぞれは
    BindingSource を通じてリレーションが貼られているため、
    「子1」を選択すれば、長男の子供達(10歳と8歳)が自動的に表示され、
    「子2」を選択すれば、次男の子供達(5歳と4歳)が自動的に表示されます。


    public partial class Form1 : Form
    {
      private DataSet ds = new DataSet("Sample");
      private DataGridView dgvParent, dgvChild, dgvGrandson;

      private void Form1_Load(object sender, EventArgs e)
      {
        Sample();
      }

      private void Sample()
      {
        ds.Clear();
        ds.ReadXml(@"C:\temp\test.xml");

        // 各 DataGridView とのバインドはデザイン時に終わらせてあるので、
        // ReadXml した後で、DataSource を再割り当てする必要はありません。
        //
        // しかしながら、型指定のない「素の DataSet」の場合には、
        // テーブル情報やリレーション情報が無いため、
        // DataMember の割り当ては、ReadXml 後に行う必要があります。
        // (事前に割り当ててしまうと、メンバー名が見つからずエラーになります)
        //
        bndParent.DataMember = "Parent";
        bndChildren.DataMember = "Parent_Childs";
        bndChild.DataMember = "Childs_Child";
        bndGrandsons.DataMember = "Child_Grandsons";
        bndGrandson.DataMember = "Grandsons_Grandson";
        //
        // ただし、DataSet デザイナを用いて「型指定された DataSet」をあらかじめ用意しておき、
        // それをデザイン時に bndParent.DataSource に割り当てていた場合には、
        // 各種 DataMember の割り当てさえもデザイン時に済ませておくことができます。
        //
      }


      public Form1()
      {
        InitializeComponent();

        #region コントロールの配置(実際はフォームデザイナで配置)
        // Load イベントの割り当てです。
        this.Load += Form1_Load;

        // フォームに BindingSource を貼ると、自動的に components がセットされるのですが
        // 今回はデザイン時処理もコードで書いていますので、下記では手動でセットしています。
        if(components == null)
        {
          components = new System.ComponentModel.Container();
        }

        // リレーションごとに BindingSource を用意しておきます。
        bndParent = new BindingSource(components);
        bndChildren = new BindingSource(components);
        bndChild = new BindingSource(components);
        bndGrandsons = new BindingSource(components);
        bndGrandson = new BindingSource(components);

        bndParent.DataSource = ds;
        bndChildren.DataSource = bndParent;
        bndChild.DataSource = bndChildren;
        bndGrandsons.DataSource = bndChild;
        bndGrandson.DataSource = bndGrandsons;

        // 下記では、親・子・孫の DataGridView を縦に3つ並べて配置しています。
        // また、フォームのリサイズに合わせて大きさが変わるよう、
        // それらを TableLayoutPanel の上に配置させています。
        //
        var panel = new TableLayoutPanel() { Dock = DockStyle.Fill, ColumnCount = 1, RowCount = 3 };
        dgvParent = new DataGridView() { Dock = DockStyle.Fill, AllowUserToAddRows = false };
        dgvChild = new DataGridView() { Dock = DockStyle.Fill, AllowUserToAddRows = false };
        dgvGrandson = new DataGridView() { Dock = DockStyle.Fill, AllowUserToAddRows = false };
        panel.RowStyles.Add(new RowStyle(SizeType.Percent, 100F / 3F));
        panel.RowStyles.Add(new RowStyle(SizeType.Percent, 100F / 3F));
        panel.RowStyles.Add(new RowStyle(SizeType.Percent, 100F / 3F));
        panel.Controls.Add(dgvParent);
        panel.Controls.Add(dgvChild);
        panel.Controls.Add(dgvGrandson);
        Controls.Add(panel);

        // データバインドの設定を行います。
        // ここでは DataSource のみを設定していますが、元データに型付き DataSet を指定してある場合は、
        // DataMember プロパティも事前に指定しておくことができます。
        //
        dgvParent.DataSource = bndParent;
        dgvChild.DataSource = bndChild;
        dgvGrandson.DataSource = bndGrandson;

        StartPosition = FormStartPosition.WindowsDefaultBounds;
        #endregion
      }
      private BindingSource bndParent;
      private BindingSource bndChildren, bndGrandsons;
      private BindingSource bndChild, bndGrandson;
    }
記事No.84124 のレス /過去ログ143より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -