PDA

View Full Version : چگونه اطلاعات در زمان نمایش به صورت صحیح نمایش دهیم



bitcob589
جمعه 11 بهمن 1392, 16:58 عصر
با سلام
با استفاده linq یک دستور سلکت نوشته ام و در نظر دارم اطلاعات تمام رکودهای دیتابیس در گریدویو نمایش دهم
اما در زمان ذخیره اطلاعات در دیتابیس اطلاعات را به صورت Encode ذخیره کرده ام چگونه می توان در زمان سلکت اطلاعات با linq رکودها به صورت decrypt تبدیل کرد و در گریدویو نمایش داد

مهرداد صفا
جمعه 11 بهمن 1392, 18:22 عصر
با سلام.
از رویداد CellFormatting (http://msdn.microsoft.com/en-us/library/system.windows.forms.datagridview.cellformatting(v =vs.110).aspx) استفاده کنید.

Mahmoud.Afrad
جمعه 11 بهمن 1392, 19:21 عصر
در کوئری از Select new استفاده کنید و در اون عمل Decrypt را انجام بدید.

var query = from t in db.tbl
select new
{
name = Decrypt(t.EncryptedData)
};

bitcob589
یک شنبه 20 بهمن 1392, 14:31 عصر
در کوئری از Select new استفاده کنید و در اون عمل Decrypt را انجام بدید.

var query = from t in db.tbl
select new
{
name = Decrypt(t.EncryptedData)
};

از دستور استفاده شد اما در زمان نمایش اطلاعات خطا زیرنمایش داده می شود

LINQ to Entities does not recognize the method 'System.String GetDecryptedData(System.String)' method, and this method cannot be translated into a store expression.

Mahmoud.Afrad
یک شنبه 20 بهمن 1392, 14:54 عصر
میتونی متد مورد نظر رو بصورت یک extension method بنویسی.
کد کوئری و متد رو بزار.

bitcob589
یک شنبه 20 بهمن 1392, 15:09 عصر
protected void Button2_Click(object sender, EventArgs e)
{
ModelContainer mashin = new ModelContainer();
var fr = (from v in mashin.cars select new { p = GetDecryptedData(v.color), rr = GetDecryptedData(v.name) });
GridView1.DataSource = fr;
GridView1.DataBind();
}
public string GetDecryptedData(string Data)
{
byte[] dEC_data = Convert.FromBase64String(Data);
string dEC_Str = ASCIIEncoding.ASCII.GetString(dEC_data);
return dEC_Str;
}

Mahmoud.Afrad
یک شنبه 20 بهمن 1392, 15:45 عصر
این کلاس رو به پروژه اضافه کن:

static class MyExtensionMethods
{
private static string GetDecryptedData(string Data)
{
byte[] dEC_data = Convert.FromBase64String(Data);
string dEC_Str = ASCIIEncoding.ASCII.GetString(dEC_data);
return dEC_Str;
}

public class CustomCar
{
public string Color { get; set; }
public string Name { get; set; }
}

public static IEnumerable<CustomCar> GetDecryptedData(this IEnumerable<car> source)
{
return (from s in source
select new CustomCar
{
Name = GetDecryptedData(s.name),
Color = GetDecryptedData(s.color)
}).ToList();
}
}

به صورت زیر ازش استفاده کن:

protected void Button2_Click(object sender, EventArgs e)
{
ModelContainer mashin = new ModelContainer();
var fr = mashin.cars.GetDecryptedData();
GridView1.DataSource = fr;
GridView1.DataBind();
}