Member 14324315 Ответов: 2

Я хочу скрыть datagridview в ini-файл после ввода данных.


http://www.hoons.net/Board/qacshap/Content/67073

Когда я ввожу URL-адрес выше,

Я пытаюсь поместить данные в сетку и нажимаю кнопку экспорта, чтобы сохранить их в виде файла .ini в виде раздела, ключа, значения. Что же мне делать? Внутри кода содержимое создается в виде ini-файла, но не в виде сетки.

Что я уже пробовал:

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.Runtime.InteropServices;
using System.IO;

namespace EXPORT
{
    public partial class Form1 : DevExpress.XtraEditors.XtraForm
    {
        [DllImport('kernel32')]

        public static extern long WritePrivateProfileString(string section, string key, string val, string filePath);

        [DllImport('kernel32')]

        public static extern int GetPrivateProfileString(string section, string key, string def, StringBuilder retVal, int size, string filePath);
        static string path = 'C:\\Test.ini';
        public Form1()
        {
            InitializeComponent();
            dataGridView1.AllowUserToAddRows =true; //자동 행 추가
            dataGridView1.AutoGenerateColumns = false;
        }

        private void button1_Click(object sender, EventArgs e)
        {
            WritePrivateProfileString('SECTION', 'KEY', 'VALUE', @'C:\ConnectionInfo.ini');
            MessageBox.Show('EXPORT successfully to *.INI format');
           

        }
        private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {


        }
        private void WriteInFile(string section,string key,string value,string path)
        {
            WritePrivateProfileString(section, key, value, path);
            if (value == null)
            {
                throw new ArgumentException();
            }
        }

        private void button2_Click(object sender, EventArgs e)  //ADD_ROW Button
        {
            DataGridViewButtonColumn button = new DataGridViewButtonColumn();
            {
                dataGridView1.Rows.Add();
            }
        }
    }
}

Christian Graus

Вы хотите, чтобы строки были записаны так, чтобы они были отформатированы в виде сетки? Если у API нет возможности сделать это, я сомневаюсь, что вы сможете.

Member 14324315

да...!!!я хочу получить данные в виде таблицы данных в виде файла .ini, нажав кнопку export_ini.

Christian Graus

Быть в таблице данных и быть в ini-файле - это две совершенно разные вещи. Они никак не связаны друг с другом. Вы можете прочитать ini-файл и поместить данные в сетку данных, если хотите

Member 14324315

Ну .. тогда вы даже не можете посмотреть, как изображение в url?

http://www.hoons.net/Board/qacshap/Content/67073

Christian Graus

Изображение представляет собой своего рода датагрид. Ini - файл не имеет буквально ничего общего с тем, как выглядит сетка. Данные могут поступать откуда-то еще, например из базы данных, и сетка будет выглядеть одинаково с немного другим кодом. Вы не опубликовали буквально никакого кода для чтения ini - файла или передачи данных в сетку.

Member 14324315

Итак, если у вас есть много данных вместо одного, можете ли вы создать файл .ini способом, отличным от формата datagridview?

Christian Graus

Ini не имеет буквально ничего общего с вашим использованием сетки данных для отображения ваших данных. Это несвязанные понятия. Никто не пользуется ini-файлами уже несколько десятилетий. Вы можете, если хотите, но это не связано с современными концепциями, потому что никто их не использует

Richard MacCutchan

Почему вы используете технологию, которая была отброшена много лет назад? Если вы хотите сохранить информацию из вашего приложения, вы должны использовать JSON или XML.

2 Ответов

Рейтинг:
2

Dave Kreskowiak

Элемент управления DataGrid является ужасным способом, чтобы изменить .ini-файл.

Чтобы написать свое .INI-файл, вам придется самостоятельно анализировать каждую строку datagrid, отслеживать, в каком разделе вы находитесь, и создавать словарь записей (пар ключ/значение) для записи в файл .INI. Как только у вас есть оба этих фрагмента данных, вы можете перейти к написанию .ini-файл.

Примеров этому не будет. Редактирование и создание .INI-файл в datagrid - это ужасный способ сделать это.


Рейтинг:
0

OriginalGriff

Как уже упоминалось, INI-файлы не "хорошо подходят" для хранения табличных данных: это формат "плоского файла", который на самом деле не настроен для нескольких строк (или особенно для строк, содержащих несколько столбцов). Это (устаревший) формат файла инициализации, а не формат файла данных.

Вместо этого вам следует посмотреть на XML, JSON или "истинную" базу данных: SQL Server, MySQL, Access, SQLite ... здесь есть много различных возможностей.

Другое дело, что вы не хотите сохранять DataGridView: вместо этого вы хотите сохранить его базовый источник данных, потому что данные в современных приложениях не зависят от среды представления (формы и тому подобного, с которой взаимодействует пользователь)
Когда вы загружаете данные в приложение, вы загружаете источник данных (который может быть практически любой коллекцией, но список или DataTable, вероятно, являются наиболее распространенными) - и когда вы сохраняете данные, вы сохраняете источник данных. Большинство элементов управления, таких как DataGridView, осведомлены о данных и позволяют "привязать" источник данных непосредственно к элементу управления, чтобы он определил, как отображать данные. Обычно это одна строка кода!

myDataGridView.DataSource = MyCollection;
Я бы настоятельно рекомендовал вам прочитать о привязке данных - Google поможет - и пойти этим путем. Это будет быстрее, надежнее и даст более удобный для обслуживания код в долгосрочной перспективе.