----- 原始消息 -----
发送者: david(1009)  接收者: 汤姆  时间: 2002-05-20 16:38:10当需要在一个DataGrid等的hyperlink column 中的url参数中传递一个以上的参数。请参考下面的例子。
(现在忙,有问题请参考 sdk).
private void DataGrid1_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e) //将本事件中将url加好
{
if ( e.Item.ItemType == ListItemType.Item | e.Item.ItemType == ListItemType.AlternatingItem)  //是数据item
{
HyperLink _hyperLink = new HyperLink(); //定义一个hyperlink control
_hyperLink.Text = e.Item.Cells[1].Text; //文字
_hyperLink.NavigateUrl = "MatchInfo.aspx?MatchID=" + e.Item.Cells[2].Text +"&GroupID=" + e.Item.Cells[1].Text; //url.可以在此定义
e.Item.Cells[1].Controls.Clear(); //将原来的控件清空,但是其必要的值已经在前面得到了
e.Item.Cells[1].Controls.Add ( _hyperLink); //将hyperlink替换原来的值 }

}

解决方案 »

  1.   

    我觉得最简单的方法,就是不要使用<asp:HyperLinkColumn>,用<asp:LinkButton>来代替。
    <ASP:DataGrid id="MyDataGrid" runat="server">
          <Columns>
          <asp:TemplateColumn>
          <ItemTemplate>
          <asp:LinkButton Runat=server id=lbnSelect CommandName="Go">
          Get Details
          </asp:LinkButton>
          <ItemTemplate>
          </asp:TemplateColumn>
          </Columns>
    </ASP:DataGrid>然后再在ItemCommand里面处理:if(e.CommandName.Equals("Go"))
    {
       Response.Redirect("datagrid13_details.aspx?id=??&xx=??&yy=?");
      //你可以传n个参数
    }
      

  2.   

    在cs文件中,先在Page_load()里面将和MyDataGrid绑定的数据放到ViewState[]里面:
    ViewState["aTable"] = aTable;//aTable是和MyDataGrid绑定的数据在aspx设计界面中从DataGrid的属性框的事件里面选择ItemCommand事件,双击到cs文件里,然后写如下代码:
    if(e.CommandName.Equals("Go"))
    {
       Datatable aTable = (DataTable)ViewState["aTable"];
       DataRow row = aTable.Row[e.Item.ItemIndex];
       int id = (int)row["au_id"];
       string aSecondValue = "xxx";
       Response.Redirect("datagrid13_details.aspx?id="+id+"&xx="+aSecondValue+"&yy=?");
      //你可以传n个参数
    }试试看。