如何将base64解码方法实现到gridview中?

时间:2018-02-02 06:11:09

标签: c# asp.net gridview base64

我有一个数据绑定方法将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>

3 个答案:

答案 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制作模型所有您的硬编码都被解雇

通过使用控制器,您可以轻松地从数据库中获取和设置数据