Soy nuevo en c#, esto puede ser muy fácil pregunta.

En mi aplicación no es un Form en la que me he datagridview dgvBill y un Botón btnClick. Yo he declarado columnas haciendo clic en el suplemento y la selección de add columns. Después de ejecutar el formulario, he escrito un texto para cada columna en dgvBill. Cuando hago clic en btnClick es la creación de un archivo xml, pero sin datos en ella. (¿por qué los datos no está siendo añadido ?)

Creado el archivo XML se parece a esto:

<?xml version="1.0" standalone="yes"?>
<NewDataSet />

He probado el código a continuación:

btnClick Evento

DataSet ds = new DataSet();
ds.WriteXml(@"..\..\Customer_Info\" + lblCustId.Text + ".xml");
dgvBill.DataSource = ds;  /* also tried ds.Tables[0] */

lblCustId es una etiqueta en la Form

Opcional: puedo hacer que cada celda del datagridview en el ComboBox?

Gracias de antemano.

InformationsquelleAutor Mr_Green | 2012-10-05

5 Comentarios

  1. 0

    Crear primero de enlace de la fuente y de la carga de los datos de origen de enlace a la tabla de datos y crear un nuevo conjunto de datos y agregar datatable para el conjunto de datos y, a continuación, escribir a archivo XML de la base de datos.

    BindingSource bs = (BindingSource )MyGridView.DataSource;
    DataTable dt= (DataTable ) bs.DataSource;
    DataSet ds = new DataSet();
    ds.Tables.Add(dt);
    ds.Tables[0].WriteXml("E:\test2.xml"); 
    • Se trata de mostrar – Error «referencia a Objeto no establecida como instancia de un objeto». Error de Punto: DataTable dt = (DataTable)bs.DataSource; . Por CIERTO, gracias por la respuesta.
    • Creo que el dataGrid se vacía..comprobarlo.
    • sí es vacío cuando está cargado. Después de la Ejecución de mi solicitud, estoy escribiendo algún texto en ella. que no es añadir al archivo XML. por favor, ayudar.
    • dataGrid.DataSource = ??? es ur origen de datos está vacía antes de la ejecución?
    • tiene u poner esta línea en el código dataGridView1.EditMode = DataGridViewEditMode.EditOnEnter;
    • sí, he creado este origen de datos en el evento buttonclick mientras que el control datagridview vacío en el evento load del formulario. aquí está mi código.
    • no, yo no he usado modo de edición. Debo usar?
    • Para la edición de DataGrid,pienso que usted debe utilizar su modo de edición.
    • La he usado. sigue el mismo problema.
    • por Favor revisa mi respuesta hay alguna otra manera de hacerlo.

  2. 0

    Mi problema resuelto cuando he creado un nuevo vacío de archivo xml (lo cual sólo ha creado nombres de columna)
    y leer el archivo xml en un objeto dataset (en el evento de carga del formulario). He utilizado el mismo conjunto de datos de objeto para escribir en diferentes archivo xml (en el evento de clic de botón). Estoy seguro de que esta no es la manera correcta pero funcionó. Por favor, publique aquí si usted tiene otras buenas sugerencias.

  3. 0

    Podría usted compruebe que ha establecido la datapropertyname para las columnas,
    Aquí está mi código. Esto funciona muy bien
    form3.cs

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    using System.IO;
    namespace WindowsFormsApplication1
    {
    public partial class Form32 : Form
    {
    public Form32()
    {
    InitializeComponent();
    }
    private void button1_Click(object sender, EventArgs e)
    {
    DataSet ds = new DataSet();
    DataTable dt = new DataTable("row");
    dt.Columns.Add("Id", typeof(int));
    dt.Columns.Add("UserName", typeof(string));
    dt.Rows.Add(1, "Tamer");
    dt.Rows.Add(2, "Foo");
    ds.Tables.Add(dt);
    dataGridView1.DataSource = ds;
    dataGridView1.DataMember = "row";
    }
    private void Form3_Load(object sender, EventArgs e)
    {
    string fileName = @"C:\users\tamer\desktop\data.xml";
    if (File.Exists(fileName))
    {
    DataSet ds = new DataSet();
    ds.ReadXml(fileName);
    dataGridView1.DataSource = ds;
    dataGridView1.DataMember = "row";
    }
    }
    private void Form3_FormClosed(object sender, FormClosedEventArgs e)
    {
    string fileName = @"C:\users\tamer\desktop\data.xml";
    DataSet dataSet = (DataSet)dataGridView1.DataSource;
    dataSet.WriteXml(fileName);
    }
    }

    }

    form3.el diseñador.cs

    espacio de nombres WindowsFormsApplication1
    {
    clase parcial Form32
    {
    ///
    ///Se requiere diseñador variable.
    ///
    Sistema privado.ComponentModel.IContainer componentes = null;

        ///<summary>
    ///Clean up any resources being used.
    ///</summary>
    ///<param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
    protected override void Dispose(bool disposing)
    {
    if (disposing && (components != null))
    {
    components.Dispose();
    }
    base.Dispose(disposing);
    }
    #region Windows Form Designer generated code
    ///<summary>
    ///Required method for Designer support - do not modify
    ///the contents of this method with the code editor.
    ///</summary>
    private void InitializeComponent()
    {
    this.dataGridView1 = new System.Windows.Forms.DataGridView();
    this.button1 = new System.Windows.Forms.Button();
    this.Id = new System.Windows.Forms.DataGridViewTextBoxColumn();
    this.UserName = new System.Windows.Forms.DataGridViewTextBoxColumn();
    ((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).BeginInit();
    this.SuspendLayout();
    //
    //dataGridView1
    //
    this.dataGridView1.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
    this.dataGridView1.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] {
    this.Id,
    this.UserName});
    this.dataGridView1.Location = new System.Drawing.Point(0, 0);
    this.dataGridView1.Name = "dataGridView1";
    this.dataGridView1.Size = new System.Drawing.Size(582, 337);
    this.dataGridView1.TabIndex = 0;
    //
    //button1
    //
    this.button1.Location = new System.Drawing.Point(246, 377);
    this.button1.Name = "button1";
    this.button1.Size = new System.Drawing.Size(75, 23);
    this.button1.TabIndex = 1;
    this.button1.Text = "button1";
    this.button1.UseVisualStyleBackColor = true;
    this.button1.Click += new System.EventHandler(this.button1_Click);
    //
    //Id
    //
    this.Id.DataPropertyName = "Id";
    this.Id.HeaderText = "Id";
    this.Id.Name = "Id";
    //
    //UserName
    //
    this.UserName.DataPropertyName = "UserName";
    this.UserName.HeaderText = "UserName";
    this.UserName.Name = "UserName";
    //
    //Form32
    //
    this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
    this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
    this.ClientSize = new System.Drawing.Size(632, 431);
    this.Controls.Add(this.button1);
    this.Controls.Add(this.dataGridView1);
    this.Name = "Form32";
    this.Text = "Form3";
    this.Load += new System.EventHandler(this.Form3_Load);
    this.FormClosed += new System.Windows.Forms.FormClosedEventHandler(this.Form3_FormClosed);
    ((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).EndInit();
    this.ResumeLayout(false);
    }
    #endregion
    private System.Windows.Forms.DataGridView dataGridView1;
    private System.Windows.Forms.Button button1;
    private System.Windows.Forms.DataGridViewTextBoxColumn Id;
    private System.Windows.Forms.DataGridViewTextBoxColumn UserName;
    }

    }

Dejar respuesta

Please enter your comment!
Please enter your name here