Jag har flera dropdownlister (ddl) som dynamiskt fylls med krypterad data i text-fältet samt id-nummer i value-fältet. Jag förstår inte riktigt varför du skulle vilja kryptera hela kontrollen och sedan dekryptera den vi användning. Jag skulle gjort skapat en listbox och manuellt lägga till items, där jag dekrypterar varje Items värde. Ett litet missförstånd: Skulle det inte var bättre om du skapa en klass som du databand mellan datasetet och kontrollen. På så sätt skulle den kunna kryptera och avkryptera data oavfsett vilken kontroll den var bunden mot. Jag hämtar datan via en klass + datareader. En idé jag hade var att jag skulle köra samma loop som innan fast i datareadern men jag har för mig att en datareader är readonly. Hur är prestandan om jag istället binder datan till ett dataset > loopar igenom tabellen > dekrypterar vald data > skickar dataset till sida (dropdownlist), OM det var något sådant du menade. Jag tycker inte du ska binda data och sedan iterera igenom alla items i kontrollen för att dekryptera värderna. Jag kan nog översätta men du har ingen VB-kod liggande över denna funktion? Jag kanske inte var tydlig nog.. Anta att du har en Datareader som innehåller din krypterade data som du vill lägga till i en listbox kontroll okrypterat.Dekrypterar dropdownlist via funktion
Nuläge:
Jag kör en For-loop efter att data har bundits till kontrollen och dekrypterar datan i text-fältet, typ:
<code>
'--> Dekrypterar användarnamn
For i = 0 To ddlAdminUserList.Items.Count - 1
'--> Om det ej är rubriken
If Not (i = 0) Then
'--> Hämtar krypterar värde
arrUserName = ddlAdminUserList.Items(i).Text.ToString
'--> Splittar array via tomrum (förnamn efternamn)
Split_arrUserName = arrUserName.Split(" ")
'--> Tilldelar option splittat värde
ddlAdminUserList.Items(i).Text = objCryptonizer.Decrypt(Split_arrUserName(0)) & " " & objCryptonizer.Decrypt(Split_arrUserName(1))
End If '//If Not (i = 0)
Next
</code>
Vad jag vill:
Jag har en klass (Cryptonizer), det borde vara smartare att i denna klass lägga till en funktion för att göra samma sak och returnerar kontrollen dekrypterad, men jag kan inte komma på något bra sätt.
Förslag?Sv: Dekrypterar dropdownlist via funktion
Mvh Fredrik NorménSv: Dekrypterar dropdownlist via funktion
Jag har en användartabell där bl.a. förnamn efternamn ligger krypterade. När man skall in och administrera företagsuppgifter har jag 2 dropdownlister som fylls med användardata. När kontrollen är data-bunden vill jag köra funktionen för att dekryptera förnamn efternamn alltså varje item.Sv: Dekrypterar dropdownlist via funktion
Sv: Dekrypterar dropdownlist via funktion
Förslag, exempel?Sv: Dekrypterar dropdownlist via funktion
<code>
public void FillDropDownListAndDecryptData(ListBox listBox, object myData )
{
//Iterera genom myData
foreach( object item in myData.Collection)
listBox.Items.Add(new ListItem(DecryptData(item.Text),DecryptData(item.Text));
}
</code>
Denna kod visar en exempel metod som du kan använda för att fylla olika listboxar med data genom att skicka in din listbox som inparameter samt din data.
Byt ut "object myData" mot objektet som innehåller din krypterade data.
Ändra även foreach loopen i koden så att den hämtar ut data rätt ifrån det objekt som innhåller din data.
/Fredrik NorménSv: Dekrypterar dropdownlist via funktion
Kan detta vara nått?
<code>
Dim li As ListItem
Public Function FillDropDownListAndDecryptData(listBox As ListBox, myListBox As Object)
//Iterera genom myListBox
For Each li in myListBox.Collection
listBox.Items.Add(new ListItem(DecryptData(item.Text),DecryptData(item.Text))
Next
</code>Sv: Dekrypterar dropdownlist via funktion
Om du då i din metod gör liknande:
Public Function FillDropDownListAndDecryptData(listBox As ListBox, reader As SqlDataReader)
while Reader.Read()
listBox.Items.Add( new ListItem(DecryptData(reader["myColumn1"].ToString()), DecryptData(reader["myColumn2"].ToString()))
wend
End Function
OBS! Du bör modifiera koden lite, använd koden enbart som en vägledning. Jag programmerar in VB.Net så syntaxer kan vara fel etc.
/Fredrik Normén