liuwenjun830

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
由于以前对DataGrid的了解相当初浅,只能用来显示数据
今天做了一下对DataGrid的深入学习
通过在网上搜索相关资料,总算能让例子达到自己的初步要求
也开始明白为什么别人说学习是一个循序渐进的过程
主要用到的一些代码:
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
using System.Xml;

namespace ReadAndWrite
{
    
/// <summary>
    
/// Form1 的摘要说明。
    
/// </summary>

    public class Form1 : System.Windows.Forms.Form
    
{
        
private System.Windows.Forms.Panel panel1;
        
private System.Windows.Forms.DataGrid dataGrid1;
        
private System.Windows.Forms.Button btn_BroswerXML;
        
private System.Data.DataSet ds;
        
private System.Windows.Forms.RichTextBox richTextBox1;
        
private System.Windows.Forms.Button button1;
        
private System.Windows.Forms.DataGridTableStyle dataGridTableStyle1;
        
private System.Windows.Forms.DataGridBoolColumn dataGridBoolColumn1;
        
private System.Windows.Forms.Button button2;

        
private bool flag =false;
        
/// <summary>
        
/// 必需的设计器变量。
        
/// </summary>

        private System.ComponentModel.Container components = null;

        
public Form1()
        
{
            
//
            
// Windows 窗体设计器支持所必需的
            
//
            InitializeComponent();

            
//
            
// TODO: 在 InitializeComponent 调用后添加任何构造函数代码
            
//
        }


        
/// <summary>
        
/// 清理所有正在使用的资源。
        
/// </summary>

        protected override void Dispose( bool disposing )
        
{
            
if( disposing )
            
{
                
if (components != null
                
{
                    components.Dispose();
                }

            }

            
base.Dispose( disposing );
        }


        
Windows 窗体设计器生成的代码

        
/// <summary>
        
/// 应用程序的主入口点。
        
/// </summary>

        [STAThread]
        
static void Main() 
        
{
            Application.Run(
new Form1());
        }


        
private void btn_BroswerXML_Click(object sender, System.EventArgs e)
        
{
            
try
            
{
                OpenFileDialog openFileDialog 
= new OpenFileDialog();
                openFileDialog.InitialDirectory 
=@"F:\";
                openFileDialog.Filter 
="XML文件|*.xml";
                openFileDialog.RestoreDirectory 
=true;
                openFileDialog.FilterIndex 
=1;
                
if(openFileDialog.ShowDialog()==DialogResult.OK)
                
{
                    flag 
=true;
                    ds.ReadXml(openFileDialog.FileName);
                    
this.dataGrid1.DataSource =ds.Tables["Item"];
                }

                ds.Tables[
"Item"].Columns.Add("Current",typeof(bool));
                
//STEP 1: Create a DataTable style object and set properties if required.
                DataGridTableStyle ts1 = new DataGridTableStyle();

                
//specify the table from dataset (required step)
                ts1.MappingName = "Item";
          
                
// Set other properties (optional step)
                ts1.AlternatingBackColor = Color.LightBlue;

                
//STEP 2: Create a string column and add it to the tablestyle
                DataGridColumnStyle TextCol = new DataGridTextBoxColumn();
                TextCol.MappingName 
= "custName"//from dataset table
                TextCol.HeaderText = "Customer Name";
                TextCol.Width 
= 100;
                ts1.GridColumnStyles.Add(TextCol);

                
//STEP 3: Create an int column style and add it to the tablestyle
                
//this requires setting the format for the column through its property descriptor
                PropertyDescriptorCollection pdc = this.BindingContext
                    [ds, 
"Item"].GetItemProperties();

                
//now created a formated column using the pdc
//                DataGridTextBoxColumn csIDInt = 
//                    new DataGridTextBoxColumn(pdc["CustID"], "i", true);
//                csIDInt.MappingName = "CustID";
//                csIDInt.HeaderText = "CustID";
//                csIDInt.Width = 50;
//                ts1.GridColumnStyles.Add(csIDInt);
                DataGridTextBoxColumn csIDInt = new DataGridTextBoxColumn();
                csIDInt.MappingName
="SID";
                csIDInt.HeaderText
="SID";
                csIDInt.Width
=100;
                ts1.GridColumnStyles.Add(csIDInt);
                
                csIDInt 
= new DataGridTextBoxColumn();
                csIDInt.MappingName
="TID";
                csIDInt.HeaderText
="TID";
                csIDInt.Width
=100;
                ts1.GridColumnStyles.Add(csIDInt);

                csIDInt 
= new DataGridTextBoxColumn();
                csIDInt.MappingName
="IID";
                csIDInt.HeaderText
="IID";
                csIDInt.Width
=100;
                ts1.GridColumnStyles.Add(csIDInt);

                csIDInt 
= new DataGridTextBoxColumn();
                csIDInt.MappingName
="Des";
                csIDInt.HeaderText
="Des";
                csIDInt.Width
=100;
                ts1.GridColumnStyles.Add(csIDInt);

                csIDInt 
= new DataGridTextBoxColumn();
                csIDInt.MappingName
="DataType";
                csIDInt.HeaderText
="DataType";
                csIDInt.Width
=50;
                ts1.GridColumnStyles.Add(csIDInt);

                csIDInt 
= new DataGridTextBoxColumn();
                csIDInt.MappingName
="TagType";
                csIDInt.HeaderText
="TagType";
                csIDInt.Width
=50;
                ts1.GridColumnStyles.Add(csIDInt);


                
//STEP 4: Add the checkbox
                DataGridColumnStyle boolCol = new DataGridBoolColumn();
                boolCol.MappingName 
= "Current";
                boolCol.HeaderText 
= "请选择要导入的行:";
                boolCol.Width 
= 100;
                ts1.GridColumnStyles.Add(boolCol);


                
//STEP 5: Add the tablestyle to your datagrid抯 tablestlye collection
                this.dataGrid1.TableStyles.Add(ts1);
                
                ds.Tables[
"Item"].Rows[0]["Current"]=true;
                ds.Tables[
"Item"].Rows[1]["Current"]=false;
            }

            
catch(Exception ex)
            
{
                MessageBox.Show(ex.Message);
            }

        }


        
private void button1_Click(object sender, System.EventArgs e)
        
{
            Form2 form 
= new Form2();
            form.Show();
        }


        
private void Form1_Load(object sender, System.EventArgs e)
        
{
            
        }


        
private void button2_Click(object sender, System.EventArgs e)
        
{
            
if(flag ==false)
            
{
                MessageBox.Show(
"还没有选取XML文档!");
            }

            
else
            
{
                
for(int i=0;i<ds.Tables["Item"].Rows.Count;i++)
                
{
                    
if(ds.Tables["Item"].Rows[i]["Current"].Equals(true))
                    
{
                        
this.richTextBox1.Text+="\n"+ds.Tables["Item"].Rows[i]["TID"].ToString();
                    }

                }

            }

        }


    }

}

还有许多不明白的地方,以后将进一步对XML操作的学习。
posted on 2006-05-08 17:30  偷回忆的人  阅读(968)  评论(2编辑  收藏  举报