读书人

关于datalist传值有关问题

发布时间: 2012-12-15 15:16:03 作者: rapoo

关于datalist传值问题
本人在做网页传值的时候出现了问题,在产品页面用datalist绑定数据库中的product项,如下图:
源代码加入如下传值:

                                    <asp:Image ID="Image1" runat="server" Height="107px"
ImageUrl='<%#DataBinder.Eval(Container.DataItem,"url") %>'
Width="130px" />
</td>
</tr>
<tr>
<td>
<a href='44.aspx?pname=<%# DataBinder.Eval(Container.DataItem,"pname") %>' style="font-size: 12pt; text-decoration:none">
<%# DataBinder.Eval(Container.DataItem,"pname") %></a>


转到产品的详细页面后,发现有的能传到值,大部分的不行,如下2图:


而此页主要代码如下:

        if (!IsPostBack)
{
string idStr =Request.Params["pname"].ToString();
SqlConnection sqlconn = sqlCon.getCon();
sqlconn.Open();
string sqlstrbind = "select * from product where pname='" + idStr + "'";
SqlCommand sqlcom = new SqlCommand(sqlstrbind, sqlconn);
SqlDataReader sdr = sqlcom.ExecuteReader();
if (sdr.Read())
{
TextBox1.Text = sdr["details"].ToString();
Label4.Text = sdr["pname"].ToString();
Image1.ImageUrl = sdr["url"].ToString();
}
sdr.Close();


}



问题怎么解决呢?为什么有个别的可以呢?
[最优解释]
你需要进行编码
<a href='44.aspx?pname=<%# Server.UrlEncode(Eval("pname").ToString()) %>'
[其他解释]
为什么没人呢,T.T
[其他解释]
你发问题都不找对版面,来的人能多嘛
[其他解释]
你要么传这个产品的ID编号,如果你传递的是中文的话,需要进行编码,否则在低版本或其他浏览器中是不会自动进行编码和解码的。

<a href='44.aspx?pname=<%#Server.UrlEncode(DataBinder.Eval(Container.DataItem,"pname").ToString()) %>' style="font-size: 12pt; text-decoration:none">

然后另一个页面需要解码:
if (!IsPostBack)
{
string idStr =Server.UrlDecode(Request.QueryString["pname"].ToString());
....
}

应该就可以了

[其他解释]
Server.UrlDecode后是错误的,无需进行 Server.UrlDecode

读书人网 >.NET

热点推荐