我在Gridview上用个HyperLinkField链接到指定页面并附加上一些参数,跳转到另一个页面,在这个页面上获取参数并执行查询,现在,在Gridview上面有的HyperLinkField跳转过去没问题,有的却有问题,我在跳转页面获取的参数好像有问题,但不知道要怎么解决,求各位大神帮助小弟一下下。。这是Gridview上的跳转超链接的前台代码。。
<asp:HyperLinkField HeaderText="通道名称" DataNavigateUrlFields="channelname,cstcode" DataNavigateUrlFormatString="~/PrivinceInfoByChannel.aspx?Channel={0}&cstcode={1}" DataTextField="channelname" ItemStyle-ForeColor="blue" />这是跳转后的页面的后台代码
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
string channelName = Request.QueryString["Channel"]; //在这个地方获取到的参数不正常。。
string cstcode = Request.QueryString["cstcode"];
BindData(channelName, cstcode);
}
}
这个问题要怎么解决呢?
<asp:HyperLinkField HeaderText="通道名称" DataNavigateUrlFields="channelname,cstcode" DataNavigateUrlFormatString="~/PrivinceInfoByChannel.aspx?Channel={0}&cstcode={1}" DataTextField="channelname" ItemStyle-ForeColor="blue" />这是跳转后的页面的后台代码
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
string channelName = Request.QueryString["Channel"]; //在这个地方获取到的参数不正常。。
string cstcode = Request.QueryString["cstcode"];
BindData(channelName, cstcode);
}
}
这个问题要怎么解决呢?
Server.UrlEncode()
Server.UrlDecode()
{
return "~/PrivinceInfoByChannel.aspx?Channel="+Server.HtmlEncode(Channel)+"&cstcode="+Server.HtmlEncode(cstcode);
}
前台:<asp:HyperLinkField HeaderText="通道名称" DataNavigateUrlFields="channelname,cstcode" DataNavigateUrlFormatString='<%#GetUrl(Eval("Channel").ToString(),Eval("cstcode").ToString())%>' DataTextField="channelname" ItemStyle-ForeColor="blue" />接受的页面
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
string channelName =Server.HtmlDecode(Request.QueryString["Channel"]!=null?Request.QueryString["Channel"]:""); //在这个地方获取到的参数不正常。。
string cstcode = Server.HtmlDecode(Request.QueryString["cstcode"]!=null?Request.QueryString["cstcode"]:"");
BindData(channelName, cstcode);
}
}希望对你有用。还有很多的方法!这个办法只是有点笨。还可以通过GridView一个事件到后台循环动态的去给HyperLink赋值。看你如何用。