Форум программистов
 
О проблемах, например, с регистрацией пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль.

Вернуться   Форум программистов > .NET > Общие вопросы .NET
Регистрация

Восстановить пароль
Повторная активизация e-mail


Ответ
 
Опции темы
Старый 13.03.2019, 12:08   #1
Kentastish
 
Регистрация: 30.05.2013
Сообщений: 6
По умолчанию VB.NET

В Visual Studio на Visual Basic в DataGridWeiw требуется добавить сохранение ширины и порядка колонок.

Последний раз редактировалось Kentastish; 14.03.2019 в 11:18.
Kentastish вне форума Ответить с цитированием
Старый 15.03.2019, 18:06   #2
Скарам
Дружите с Linq ;)
Форумчанин
 
Аватар для Скарам
 
Регистрация: 15.10.2008
Сообщений: 822
По умолчанию

Код:
Class SurroundingClass
    Private Sub Form2_FormClosing(ByVal sender As Object, ByVal e As FormClosingEventArgs)
        savestatdatatgrid(myDataGridView1)
    End Sub

    Private Sub savestatdatatgrid(ByVal DG As MyDataGridView)
        Dim dt As DataTable = New DataTable(DG.Name)
        dt.Columns.Add("name")
        dt.Columns.Add("width")
        dt.Columns.Add("index")

        For i As Integer = 0 To DG.Columns.Count - 1
            Dim dr As DataRow = dt.NewRow()
            dr("name") = DG.Columns(i).Name
            dr("width") = DG.Columns(i).Width
            dr("index") = DG.Columns(i).DisplayIndex
            dt.Rows.Add(dr)
        Next

        dt.WriteXml("Dgstat.xml")
        dt.WriteXmlSchema("Dgstat.csx")
    End Sub

    Public Sub New()
        InitializeComponent()
        loaddatagrid()

        Try
            loadstatdatatgrid(myDataGridView1)
        Catch
        End Try
    End Sub

    Private Sub loadstatdatatgrid(ByVal myDataGridView1 As MyDataGridView)
        Dim dt As DataTable = New DataTable()
        dt.ReadXmlSchema("Dgstat.csx")
        dt.ReadXml("Dgstat.xml")

        For Each dr As DataRow In dt.Rows
            myDataGridView1.Columns(dr(0).ToString()).Width = Integer.Parse(dr(1).ToString())
            myDataGridView1.Columns(dr(0).ToString()).DisplayIndex = Integer.Parse(dr(2).ToString())
        Next
    End Sub
End Class
Не давай организму поблажки, каждый день тренируй его в шашки..
Скарам вне форума Ответить с цитированием
Старый 26.03.2019, 14:45   #3
Kentastish
 
Регистрация: 30.05.2013
Сообщений: 6
По умолчанию

Цитата:
Сообщение от Скарам Посмотреть сообщение
Код:
Class SurroundingClass
    Private Sub Form2_FormClosing(ByVal sender As Object, ByVal e As FormClosingEventArgs)
        savestatdatatgrid(myDataGridView1)
    End Sub

    Private Sub savestatdatatgrid(ByVal DG As MyDataGridView)
        Dim dt As DataTable = New DataTable(DG.Name)
        dt.Columns.Add("name")
        dt.Columns.Add("width")
        dt.Columns.Add("index")

        For i As Integer = 0 To DG.Columns.Count - 1
            Dim dr As DataRow = dt.NewRow()
            dr("name") = DG.Columns(i).Name
            dr("width") = DG.Columns(i).Width
            dr("index") = DG.Columns(i).DisplayIndex
            dt.Rows.Add(dr)
        Next

        dt.WriteXml("Dgstat.xml")
        dt.WriteXmlSchema("Dgstat.csx")
    End Sub

    Public Sub New()
        InitializeComponent()
        loaddatagrid()

        Try
            loadstatdatatgrid(myDataGridView1)
        Catch
        End Try
    End Sub

    Private Sub loadstatdatatgrid(ByVal myDataGridView1 As MyDataGridView)
        Dim dt As DataTable = New DataTable()
        dt.ReadXmlSchema("Dgstat.csx")
        dt.ReadXml("Dgstat.xml")

        For Each dr As DataRow In dt.Rows
            myDataGridView1.Columns(dr(0).ToString()).Width = Integer.Parse(dr(1).ToString())
            myDataGridView1.Columns(dr(0).ToString()).DisplayIndex = Integer.Parse(dr(2).ToString())
        Next
    End Sub
End Class
Код:
   Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Dim bsObj As New List(Of ColumnParameter)()
        Dim js As New JavaScriptSerializer()
        For Each cCol As DataGridViewColumn In Grid.Columns
            bsObj.Add(New ColumnParameter With {.name = cCol.Name, .index = cCol.Index, .width = cCol.Width})
        Next cCol
        Dim jsonData As String = js.Serialize(bsObj)
        Dim result As String = Path.GetTempPath() & "SerializationOverview.xml"
        File.WriteAllText(result, jsonData)
    End Sub
End Class
Public Class ColumnParameter

    Public Property name As String
    Public Property index As Integer
    Public Property width As Integer

End Class
а если так ?
Kentastish вне форума Ответить с цитированием
Старый 26.03.2019, 14:51   #4
Kentastish
 
Регистрация: 30.05.2013
Сообщений: 6
По умолчанию

Код:
 Dim js As New JavaScriptSerializer()
        Dim jsonData As String = File.ReadAllText(Path.GetTempPath() & "SerializationOverview.xml")
        Dim DataGridViewColumn As List(Of ColumnParameter) = js.Deserialize(Of List(Of ColumnParameter))(jsonData)

        For Each cCol As DataGridViewColumn In Grid.Columns

            Console.WriteLine(cCol.Name + " " + cCol.Index + " " + cCol.Width)
        Next cCol
        Console.ReadLine()]
При открытии формы должны подтягиваться сохранённые ранее данные
ругается на эту строчку - Console.WriteLine(cCol.Name + " " + cCol.Index + " " + cCol.Width)

System.InvalidCastException: "Приведение строки "e_container_id " к типу "Double" является недопустимым."

Последний раз редактировалось Kentastish; 26.03.2019 в 14:54.
Kentastish вне форума Ответить с цитированием
Ответ

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Опции темы



Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru
Пеллетный котёл Emtas
котлы EMTAS