Raniel Quirante Ответов: 1

Как я могу использовать статический метод в табличном виде отделенного кода?


Итак, вот что я пытаюсь сделать с DataTextFormatString, я хочу отформатировать его в зашифрованном виде, но единственное, что шифруется, - это "{0}", а не фактические строки, которые он представляет, пожалуйста, помогите.

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

Это то, что я пробовал, но я знаю, что у него неправильный синтаксис. Но я надеюсь, что вы поймете, что я пытаюсь сделать...

HyperLinkField Age = new HyperLinkField();
Age.DataNavigateUrlFormatString = "./testpage.aspx?Id={0}";
Age.DataTextField = "Age";
Age.HeaderText = "Age";
Age.DataTextFormatString = Encryption.GetEncryption("{0}");
GridView1.Columns.Add(Age);


Шифрование имеет статический метод GetEncryption который заключается в следующем:

public static string GetEncryption(string data)
    {
        return Convert.ToBase64String(EncryptString(data));
    }

F-ES Sitecore

Во-первых, кодировка base64-это не шифрование.

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

https://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.gridview.rowdatabound(v=vs. 110).aspx

Поскольку элемент привязан, вы можете изменить текст ссылки, чтобы он был закодированной версией самого себя.

1 Ответов

Рейтинг:
10

Raniel Quirante

Итак, я последовал вашему совету, и это мой ответ на мой вопрос,

Я добавил новый столбец в набор данных, названный "encrypted_age",

Затем в таблице данных я обработал существующие строки из столбца age, чтобы они были зашифрованы. Я использовал if rows is empty, так как мне не нужна новая строка в наборе данных, а нужно заполнить новый столбец новыми значениями строк.

После заполнения столбца "Encrpyted_Age" я использовал его для отображения в коде за столбцом GridView, который является полем гиперссылки.

Спасибо, что помогли мне

ds.Tables[0].Columns.Add("Encrypted_Age", typeof(string));
           int i = 0;
           foreach (DataRow row in ds.Tables[0].Rows)
           {

               if (ds.Tables[0].Rows[i][3].ToString() == "")
               {
                   ds.Tables[0].Rows[i][3] = Crypto.GetEncryptedQueryString(row["age"].ToString());
               }
               i++;
           }

           ds.Tables[0].AcceptChanges();

           con.Close();

           HyperLinkField Age = new HyperLinkField();
           string[] dataNavigateUrlFields = { "Encrypted_Age" };

           Age.DataNavigateUrlFormatString = "./testpage.aspx?id={0}";
           Age.DataNavigateUrlFields = dataNavigateUrlFields;
           Age.DataTextField = "Encrypted_Age";
           Age.HeaderText = "Age";

           GridView1.Columns.Add(Age);

           GridView1.DataSource = ds;
           GridView1.DataBind();