jak wyciągnąc dane z richtextbox1 to datagridview dynamicznie

0

Witam,

Potrzebuję pomocy fachowców.

Mam richtextbox1 w ktorym jest wczesniej juz zdekodowany text z Base64

Oto przykladowy fragment tego tekstu


natPolicyOrigSrc_0=SonicWALL SSO Agents
natPolicyOrigDst_0=LAN Interface IP
natPolicyOrigSvc_0=SonicWALL SSO Agents
natPolicyTransSrc_0=
natPolicyTransDst_0=
natPolicyTransSvc_0=
natPolicySrcIface_0=-1
natPolicyDstIface_0=-1
natPolicyEnabled_0=1
natPolicyReflexive_0=0
natPolicyComment_0=Firewall SSO agent authentication NAT policy
natPolicyNonDeletable_0=1
natPolicyProperties_0=17407
natPolicyRemapAlg_0=0
natPolicyProbeEnable_0=0
natPolicyProbeType_0=1
natPolicyProbePort_0=80
natPolicyReplyTimeOut_0=3
natPolicyProbeIntrvl_0=5
natPolicyMissedProbes_0=3
natPolicySuccessfulProbes_0=3
natPolicyOrigSrc_1=
natPolicyOrigDst_1=LAN Primary IP
natPolicyOrigSvc_1=HTTP Management
natPolicyTransSrc_1=
natPolicyTransDst_1=
natPolicyTransSvc_1=
natPolicySrcIface_1=0
natPolicyDstIface_1=0
natPolicyEnabled_1=1
natPolicyReflexive_1=0
natPolicyComment_1=Management NAT Policy
natPolicyNonDeletable_1=1
natPolicyProperties_1=17407
natPolicyRemapAlg_1=0
natPolicyProbeEnable_1=0
natPolicyProbeType_1=1
natPolicyProbePort_1=80
natPolicyReplyTimeOut_1=3
natPolicyProbeIntrvl_1=5
natPolicyMissedProbes_1=3
natPolicySuccessfulProbes_1=3
natPolicyOrigSrc_2=
natPolicyOrigDst_2=X2 IP
natPolicyOrigSvc_2=HTTP Management
natPolicyTransSrc_2=
natPolicyTransDst_2=
natPolicyTransSvc_2=
natPolicySrcIface_2=2
natPolicyDstIface_2=2
natPolicyEnabled_2=1
natPolicyReflexive_2=0
natPolicyComment_2=Management NAT Policy
natPolicyNonDeletable_2=1
natPolicyProperties_2=17407
natPolicyRemapAlg_2=0
natPolicyProbeEnable_2=0
natPolicyProbeType_2=1
natPolicyProbePort_2=80
natPolicyReplyTimeOut_2=3
natPolicyProbeIntrvl_2=5
natPolicyMissedProbes_2=3
natPolicySuccessfulProbes_2=3


Są to powiedzmy polisy tzw "natPolicy" a numery na końcu oznaczają numer porzadkowy tej policy.

czyli wszysto z "_1" nalezy do pierwszej "natPolicy", taka nazwa zaczyna sie linia

NA przykladzie przedstawiam przykladowe 3 takie polisy

A teraz ja potrzebuję napisać takiego kodu który wyciągnie mi z richtekstbox1 te 3 natPolicy, wezmie kazda wlasciwosc i wpisze do DataViewGrid ktorego liczba kolumn bedzie sie skladac dynamicznie z ilosci wlasciwosci w tej natPolicy np.

natPolicyOrigSrc_2=
natPolicyOrigDst_2=X2 IP
natPolicyOrigSvc_2=HTTP Management

wlasciwosc bedzie OrigSrc (nazwa kolumny w datagridview), "_2" czyli jest to 3 rzad w datagridview bo pierwsza polisa to "_0", drgua to "_1", a trzecia to "_2" a oczywiscie wartosc komorki w datagridview bedzie co kolwiek po znaku rowna sie "="

Nawazniejsze w tym wszystkim, zeby te dane byly ze soba polaczone i EDYTOWALNE, czyli moge zmienic wartosci tego richtextbox1 z poziomu DataGridView i viceversa.

Czyli podsumujac liczba kolumn bedzie dynamicznie zalezala od ilosci wlasciwosci
liczba wierszy bedzie dynamicznie zalezala od ilosc takich policy ktore znajda sie w richtextbox1.

Dziękuję z góry

0

Ja bym napisał parser, który przetwarza ten tekst na List<Dictionary<string, string>>. List, bo "natPolicy" jest wiele, a Dictionary<string, string>, bo każda z nich jest zestawem par klucz-wartość typu string. Następnie napisałbym drugą klasę, która tę listę słowników przechodzi w dwóch zagnieżdżonych pętlach, i buduje z niej DataGridView. Dodawanie wierszy i kolumn jest chyba banalne - odpowiednio Rows.Add i Columns.Add.

Co do połączenia RichTextBox z DataGridView, to trzeba odpowiednio zareagować na zdarzenia TextChanged i CellEndEdit. A, no i trzeba napisać też builder, który zbuduje napis do RichTextBoxa na podstawie wartości z komórek DataGridView, czyli przejdzie w zagnieżdżonych pętlach po wierszach i kolumnach i połączy ze sobą wartości komórek.

1 użytkowników online, w tym zalogowanych: 0, gości: 1