我有一个数据绑定方法将gridview绑定到数据库。
private void BindGrid()
{
string constr = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
SqlConnection con = new SqlConnection(constr);
con.Open();
SqlCommand cmd = new SqlCommand("select bookingId, bookingName, fprice from addCart");
SqlDataAdapter sda = new SqlDataAdapter();
cmd.Connection = con;
sda.SelectCommand = cmd;
using (DataTable dt = new DataTable())
{
sda.Fill(dt);
GridView1.DataSource = dt;
GridView1.DataBind();
}
con.Close();
}
由于我之前使用过base64编码方法对bookingId和bookingName进行编码,因此gridview中显示的数据仅显示编码值。如何添加base64解码方法,使其在gridview中显示解码值?
我如何使用我的编码:
byte[] serviceEncode = System.Text.Encoding.Unicode.GetBytes(serviceLabel.Text);
sqlCmd.Parameters.AddWithValue("@bookingName", SqlDbType.VarChar).Value = Convert.ToBase64String(serviceEncode);
数据库价值:QgBpAGMAeQBjAGwAZQAmACMAMwAyADsA
我之前在项目模板中使用了html解码方法。我想知道是否有任何类似的已知方法使用base64进行解码?
<ItemTemplate>
<asp:Label ID="Label1" runat="server" decoding="base64" Text='<%# HttpUtility.HtmlDecode(Eval("bookingName").ToString()) %>'></asp:Label>
</ItemTemplate>
答案 0 :(得分:0)
您可以使用此功能:
base64_decode('QgBpAGMAeQBjAGwAZQAmACMAMwAyADsA');
替换为:
string newbookingname = Encoding.UTF8.GetString(Convert.FromBase64String(dr["bookingName"].ToString()));
有了这个:
string textDecoded = System.Text.Encoding.UTF8.DecodeBase64(<"Your encoded string">);
你可以参考这个错误: How do I encode and decode a base64 string?
答案 1 :(得分:0)
在Datatable中运行foreach并使用解码值
更新行[{u'action': u'browse', u'timestamp': 1487271527, u'user': u'Dave'}, {u'action': u'navigate', u'timestamp': 1487271528, u'user': u'Dave'}, {u'action': u'browse', u'timestamp': 1487271529, u'user': u'Dave'}, {u'action': u'view', u'timestamp': 1487271530, u'user': u'Dave'}, {u'action': u'browse', u'timestamp': 1487271531, u'user': u'Dave'}, {u'action': u'browse', u'timestamp': 1487271532, u'user': u'Dave'}, {u'action': u'browse', u'timestamp': 1487271533, u'user': u'Dave'}, {u'action': u'navigate', u'timestamp': 1487271534, u'user': u'Dave'}]
和gridview
string constr = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
SqlConnection con = new SqlConnection(constr);
con.Open();
SqlCommand cmd = new SqlCommand("select bookingId, bookingName, fprice from addCart");
SqlDataAdapter sda = new SqlDataAdapter();
cmd.Connection = con;
sda.SelectCommand = cmd;
using (DataTable dt = new DataTable())
{
sda.Fill(dt);
foreach (DataRow dr in dt.Rows)
{
//decode the bookingid and bookingname and update in table
if(dr["bookingName"].ToString()!=""){
string newbookingname = "";
try {
newbookingname = System.Text.Encoding.Unicode.GetString(Convert.FromBase64String(dr["bookingName"].ToString()));
}
catch(Exception e)
{
newbookingname = dr["bookingName"].ToString();
}
dr["bookingName"] = newbookingname;
}
}
GridView1.DataSource = dt;
GridView1.DataBind();
}
con.Close();
答案 2 :(得分:0)
〜这个答案没有直接的anwser它只是一些推荐〜
几个月前我遇到了这个问题,我以前先转换数据然后再使用它。
建议您使用实体框架。
它比ADO更灵活。 然后你可以使用GUID类型的ID,它很容易显示在任何地方。
对于使用EF,最好先使用数据库然后编码,通过这种技术,您可以在Visual Studio中创建数据库,然后EF可以为您和BOOM制作模型所有您的硬编码都被解雇
通过使用控制器,您可以轻松地从数据库中获取和设置数据