我想为DataGrid的一个HyperLinkColumn列绑定带参数url的问题
就是这种形式 test.aspx?id=1参数有多个,都是DataGrid的数据源中的列如果只有一个可以设置DataTextField 和 DataNavigateUrlFormatString属性但是多个列无法同时绑定到DataTextField属性上我想只能用NavigateUrl这个属性但是请教应该如何写呢???谢谢

解决方案 »

  1.   

    有多个参数的话,还是在ItemDataBound事件里自己生成URL吧例
    private void DataGrid1_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
    {
    if(e.Item.ItemIndex>=0)
    {
    DataView dv=(DataView)((DataGrid)sender).DataSource;
    DataRow dr=dv.Table.Rows[e.Item.DataSetIndex];
    e.Item.Cells[1].Text=String.Format("<a href='url?param1={0}&param2={1}'>link</a>",dr["param1"],dr["param2"]);
    }
    }
      

  2.   

    模板列更方便
     <asp:TemplateColumn SortExpression="UserName" HeaderText="姓名">
        <HeaderStyle Width="70px"></HeaderStyle>
        <ItemTemplate>
            <a href='form1.aspx?id=<%# DataBinder.Eval(Container.DataItem,"UserID") %>&name=<%# DataBinder.Eval(Container.DataItem,"UserName") %>' target="_blank">
                <%# DataBinder.Eval(Container.DataItem,"UserName") %>
            </a>
        </ItemTemplate>
    </asp:TemplateColumn>
      

  3.   

    谢谢astra1(Hyperion) 和 singlepine(小山)
      

  4.   

    但是还有个问题,上面两种方法无论哪种,第一个参数取出来在URL中显示的都是乱码
    test.aspx?param1=1%20%20%20%20%20%20%20%20%20&param2=1第一个列和第二列数据类型一样,都是char(10)
    请教为什么第一列变成1%20%20%20%20%20%20%20%20%20了?谢谢
      

  5.   


    字段里有空格,用Trim()比如小山的模版
    DataBinder.Eval(Container.DataItem,"UserName").ToString().Trim()