我也想问这个,请高手出现
用hyperlink 但是怎么使他的navigaterurl 为 mail.aspx?id=第三列的值 这样的形式?

解决方案 »

  1.   

    楼上的,如果是1个,非常容易了,关键是现在确定不了f_menu有几项值,
    不可能动态生成多个hyperlink吧????然后再分别写navigaterurl
      

  2.   

    使用DataGrid模板,在模板列中使用一个链接<asp:TemplateColumn>
    <ItemTemplate>
    <a href='client_.aspx?editid=<%#DataBinder.Eval(Container.DataItem,"f_messname")%> '><%#DataBinder.Eval(Container.DataItem,"f_menu")%></a>
    </ItemTemplate>
    </asp:TemplateColumn>
    这样就可以实现了
      

  3.   

    用数组呀。for i = 0 to ubound(f_menu)
      dim hy as new hyperlink
        hy.navigaterurl=''''''''   '''''''
    next 
      

  4.   

    1、首先将数据库表的内容读到dataset
    2、循环将f_menu的内容取出来分别处理
    3、处理思路:比如string strMenu = "aa,bb,cc",通过replace,变成
       strMenu = " <a href='ShowDetail.aspx?id=aa' target='_blank'>aa</a> "
               + " <a href='ShowDetail.aspx?id=bb' target='_blank'>bb</a> "
               + " <a href='ShowDetail.aspx?id=cc' target='_blank'>cc</a> ";
        字符串处理,这不难吧???
    4、Dataset绑定到DataGrid上,自动会变成链接的
    5、ShowDetail.aspx中
       protected override void PageInit()
       {
          strMenuID = Request.QueryString["id"];
          //根据得到的ID(aa,bb or cc)将内容显示出来
       }
      

  5.   

    f_menu数据字段存的动态的,就将步奏3作成函数呀,根据compa(,)自动换成"<a>XXX</a>"
      

  6.   

    写错了f_menu数据字段存的动态的,就将步奏3作成函数呀,根据comma(,)
    自动换成"<a>XXX1</a>,<a>XXX2</a>,<a>XXX3</a>,...,<a>XXXn</a>,"
      

  7.   

    你在模板中置空<asp:TemplateColumn HeaderText="f_menu"></asp:TemplateColumn>
    然后再在DataGrid控件的ItemCreated事件中做如下处理.定义一个Literal控件类型的变量
     Literal Literal1;
    .读取第三列的值且将其用Split函数分成数组
    注意访问时加条件
            DataRowView datrowv;
            datrowv = e.Item.DataItem;
            If(IsNull(datrowv))
             {
                Return;
              }
            Else
             {
                 //以下代码加在此
             }.做循环向Literal控件中加项
    Literal1.Text += "<A href=a.aspx target=_blank>" + arr1[i].ToString() + "</A>";
    .向模板列中添加该Literal控件
    e.Item.Cells(2).Controls.Add(speList)
      

  8.   

    楼上的方法可以,比较简单。当然也可以动态增加HyperLink
      

  9.   

    to:chxzll(小气包)
    要如何读取第三列的值呢?
    在BindGrid()中已经用SQL取出来
    "select f_messid,f_departid,f_menu from m_menubar"
      

  10.   

    to:chxzll(小气包)
    按照你的方法,我已經得到了Literal1.Text的值
    但是最后显示在DataGrid中的仍然是空白,什么都没有,什么问题呀?? 我跟踪过Literal1.Text的值,的确已经取得了,而且也通过了e.Item.Cells(2).Controls.Add
      

  11.   

    ok,前面定義了函數GetValue()用來生成"<A href=a.aspx target=_blank>" + arr1[i].ToString() + "</A>";
    後面我在BindGrid()用
    dt.Columns.Add (new DataColumn("menu", typeof(string)));
    for(int i=0; i<=dt.Rows .Count -1; i++)  
    {
    dt.Rows[i]["menu"]=GetValue(ds.Tables[0].Rows[i]["f_menu"].ToString());
    }謝謝大家了,結帖!
      

  12.   

    那样动态添加列也行,在datagrid中添加第四列,不可见,来显示那个字段的值,取值方法
    DataRowView datrowv;
    datrowv = e.Item.DataItem;
    If(IsNull(datrowv))
    {
      Return;
    }
    Else
    {
      string menu;
      menu = datrowv[3];
      //或者menu = datrowv["f_menu"];
      string[] arr = menu.Split(",".ToCharArray());
      Literal lit1;
      for (int lp=1;lp<arr.Length;lp++)
      {
        lit1.Text += "<A href=a.aspx target=_blank>" + arr[lp].ToString() + "</A>";
        e.Item.Cells(2).Controls.Add(lit1)
      }
    }
      

  13.   

    第一行少加了一句话:
    那样动态添加列也行,在datagrid中添加第四列,不可见,来显示那个字段的值,在
    ItemCreated事件中取值,取值方法