userid传递int类型的没有问题。
但是month传递字符串出现问题。如果month为“一二三”。那么传递到新的页面。链接显示也是month=一二三
但是读出来的确是“一二”为什么没有“三”呢。
这是 <asp:HyperLinkField DataNavigateUrlFields="userid,month" DataNavigateUrlFormatString="~/jifen/kaohe/jfhuabodetail.aspx?userid={0}&amp;month={1}"
DataTextField="userid" HeaderText="员工编号" />
这是读取的代码
        string month =Request.QueryString["month"].ToString();找了一上午都说用server.urlencode和Server.UrlDecode进行传递值。但是在gridview中怎么用呢?

解决方案 »

  1.   


    string.Format("...aspx?userid={0}&amp;month={1}",userid,Server.UrlEncode(month));
      

  2.   

    另外想到的一可能是页面的编码问题了. 试试把web.config文件里配置所有类型都为utf-8编码,然后把文件保存高级选项中,编码改为utf-8(页面与代码页都要改)
      

  3.   

    <system.web>
         <globalization requestEncoding ="utf-8" responseEncoding ="utf-8" fileEncoding="utf-8" />
    </system.web>
      

  4.   

    我試了下在gridview中用你的方法HyperLinkField 跳轉頁怎么弄帶過去的值都是“一二?”,
    我就換了個模板列TemplateField試試,在其中加入LinkButton,通過LinkButton的單擊事件帶參數跳頁就可以得到“一二三”了    protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                LinkButton lbtn = (LinkButton)e.Row.FindControl("LinkButton1");
                lbtn.CommandArgument = e.Row.Cells[0].ToString();
            }
        }
        protected void LinkButton1_Click(object sender, EventArgs e)
        {
             LinkButton lbtn = (LinkButton)sender;
             Response.Redirect(string.Format("collasp.aspx?userid={0}&month={1}", lbtn.CommandArgument, lbtn.Text));
        }
      

  5.   

    month的值在给url传递之前,是哟个server为其编码,如:Server.UrlEncode(monthValue);
      

  6.   

    <ItemTemplate>
    <asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl='<%# "report_monthdetail.aspx?khdx=" + Server.UrlEncode(DataBinder.Eval (Container.DataItem,"khdx").ToString()) %>' Text="详细信息"></asp:HyperLink>
    </ItemTemplate>
      

  7.   

    string month =Request.QueryString["month"].ToString(); 
    ======
    如果更改为Request["month"].ToString();试试看呢?我记得地址栏中的长度最多256个字节,不过,感觉应该不会影响啊。
      

  8.   

    不会的。以上是gridview传递。我测试通过了。
    在新的页面接受数据的时候不用解码。直接用就可以了。我也不想用中文字符。可是总得学会怎么用吧。楼上的方法我还没有用过。不知道语法有问题没有
      

  9.   

    <asp:HyperLinkField DataNavigateUrlFields="userid,month" DataNavigateUrlFormatString="~/jifen/kaohe/jfhuabodetail.aspx?userid={0}&amp;month={1}" 
    DataTextField="userid" HeaderText="员工编号" /> 
    ==
    <asp:TemplateField HeaderText="员工编号">
        <ItemTemplate>
            <a href='<%# "~/jifen/kaohe/jfhuabodetail.aspx?userid=" + Eval("userid").ToString() + "&month=" + Server.UrlEncode(Eval("month").ToString()) %>' ><%# Eval("userid") %></a>
        </ItemTemplate>
    </asp:TemplateField>接受页面
    string month = Server.UrlDecode(Request.QueryString["month"]);