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

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

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

No.87091 の関連記事表示

<< 0 >>
■87091  Re[1]: datagridviewからxmlへの出力について
□投稿者/ WebSurfer -(2018/04/11(Wed) 12:58:41)
    No87059 (kaz さん) に返信
    
    <追伸>
    
    > 【質問2】
    > datagridviewにチェックボックスが配置されていて
    > チェックをつけたセルについては、
    > <checked>true</checked>
    > と出力されるのですが
    > チェックがついていないセルについては
    > 【質問1】の状況と似たように
    > 項目自体が出力されません
    
    こちらは自分が試した限りでは再現できませんでした。
    
    DataGridView 上でのチェックボックスのチェックの有無と xml ファイルの true / false は
    きちんと期待通りに対応します。
    
    どのように試したかと言うと、以下の通りです。質問者さんのケースとどこが違うかチェック
    してみてください。
    
    (1) SQL Server の Microsoft のサンプルデータベースの Northwind の Products テーブルか
      ら以下のクエリを使ってインラインスキーマ付きの xml を生成。
    use NORTHWIND
    go
    select top 5 * from Products FOR XML raw('product'),
       root('root'), elements, XMLSCHEMA('MyURI')
    
    	UserInfo.xml という名
      前を付けて xml ファイルとして保存。
    
    (2) Visual Studio で Windows Forms アプリのプロジェクトを作成。それに、上記 (1) の手順
      で作った xml を UserInfo.xml という名前を付けて保存。
    
    (3) Windows Forms アプリに以下のクラスファイル(ビジネスロジック)を追加。
    
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Data;
    
    namespace EditXmlFileOnDataGridView
    {
        public class UserInfoTable : IDisposable
        {
            const string filePath = @"C:\Users\...\UserInfo.xml";
            private DataSet myDataSet;
    
            public UserInfoTable()
            {
                myDataSet = new DataSet();
                myDataSet.Locale = System.Globalization.CultureInfo.InvariantCulture;
                myDataSet.ReadXml(filePath, XmlReadMode.ReadSchema);
            }
    
            public virtual void Dispose(bool disposing)
            {
                if (disposing)
                {
                    myDataSet.Dispose();
                }
            }
    
            public void Dispose()
            {
                Dispose(true);
                System.GC.SuppressFinalize(this);
            }
    
            ~UserInfoTable()
            {
                Dispose(false);
            }
    
            public DataSet GetDataSet()
            {
                return myDataSet;
            }
    
            // ・・・中略・・・
    
            public void Save()
            {
                myDataSet.WriteXml(filePath, XmlWriteMode.WriteSchema);
            }
        }
    }
    
    (4) 自動生成されている Form1 にデザイン画面で DataGridView, Button を貼り付け。
      以下のコードを書く。
    
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    
    namespace EditXmlFileOnDataGridView
    {
        public partial class Form1 : Form
        {
            private BindingSource bindingSource1 = new BindingSource();
            private UserInfoTable userInfo;
    
            public Form1()
            {
                InitializeComponent();
                this.userInfo = new UserInfoTable();
                DataTable table = userInfo.GetDataSet().Tables[0];
                table.AcceptChanges();
                this.bindingSource1.DataSource = table;
                this.dataGridView1.DataSource = bindingSource1;
            }
    
            private void button1_Click(object sender, EventArgs e)
            {
                this.bindingSource1.EndEdit();
                this.userInfo.Save();
                this.userInfo.GetDataSet().Tables[0].AcceptChanges();
            }
        }
    }
記事No.87059 のレス /過去ログ149より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -