现在的位置: 首页 > 综合 > 正文

怎么给HyperLinkColumn的DataNavigateUrlField指定多个字段?(datagrid)

2019年03月28日 ⁄ 综合 ⁄ 共 3151字 ⁄ 字号 评论关闭

 

怎么给HyperLinkColumn的DataNavigateUrlField指定多个字段?

楼主tanrui(Tanruy)2004-08-15 10:43:52 在 .NET技术 / ASP.NET 提问

我想让HyperLinkColumn的url参数有两个字段:  
  somepage.aspx?id=1&name=terry  
  在数据源中的字段是ID和Name,  
  那应该怎么写DataNavigateUrlField? 问题点数:20、回复次数:5Top

1 楼saucer(思归)回复于 2004-08-15 10:57:02 得分 20

HyperLinkColumn   doesn't   support   multiple   parameters,   use   TemplateColumn   instead  
   
  <asp:TemplateColumn   HeaderText="View   Details">    
  <ItemTemplate>    
  <asp:Hyperlink   runat="server"   Text='View   Details'                                                                                  
  NavigateUrl='<   %#   "page.aspx?ViewID="   &   Server.UrlEncode(Container.DataItem("ListingNo"))  
  "&Param2="&Server.UrlEncode(DropDown1.SelectedItem.Value)%>   '  
   
              ID="Hyperlink1"   NAME="Hyperlink1"   />    
  </ItemTemplate>    
  </asp:TemplateColumn>    
   
   
   
  see  
  http://www.dotnetspider.com/Technology/KBPages/585.aspx  
  Top

2 楼webdiyer(陕北吴旗娃)回复于 2004-08-15 10:57:29 得分 0

用模板列,或者在DAtaGrid的ItemDataBound事件处理程序中先用FindControl方法找到对应列的HyperLink,然后通过绑定的数据指定它的NavigateUrl属性。Top

3 楼tongtianming(菜鸟也有梦想)回复于 2004-08-15 11:01:32 得分 0

<asp:HyperLinkColumn   DataNavigateUrlField="Num"   DataNavigateUrlFormatString="Response.Redirect('../YL/YL.htm?id={0}')"   DataTextField="Link"   HeaderText="链接"></asp:HyperLinkColumn>  
  <asp:HyperLinkColumn   DataNavigateUrlField="id"   DataNavigateUrlFormatString="javascript:window.showModalDialog('ViewDetail.aspx?id={0}');"   DataTextField="id"   HeaderText="ID"></asp:HyperLinkColumn>  
  *************datagride列传递多个数据*********  
   
  <asp:TemplateColumn   HeaderText="备注">  
  <ItemTemplate>  
  <asp:HyperLink   id="HyperLink1"   runat="server"   NavigateUrl="Editfittings.aspx?str1=<%#   DataBinder.Eval(Container.DataItem,   'ID')%>&str2=<%#   DataBinder.Eval(Container.DataItem,   'CarType')%>"     text='<%#   DataBinder.Eval(Container.DataItem,"备注")%>'>  
  </asp:HyperLink>  
  </ItemTemplate>  
  </asp:TemplateColumn>  
  当年我写的,有2种方法能选择Top

4 楼tnt8csdn2000(琥珀雨田)回复于 2004-08-15 11:41:45 得分 0

既然用模板列了,就用linkbutton,在后台想怎么写就怎么写。Top

5 楼46539492(男儿当自强(http://blog.csdn.net/46539492/))回复于 2004-08-15 11:45:46 得分 0

就用模板列。  
  <asp:TemplateColumn   HeaderText="备注">  
  <ItemTemplate>  
  <asp:HyperLink   id="HyperLink1"   runat="server"   NavigateUrl="Editfittings.aspx?str1=<%#   DataBinder.Eval(Container.DataItem,   'ID')%>&str2=<%#   DataBinder.Eval(Container.DataItem,   'CarType')%>"     text='<%#   DataBinder.Eval(Container.DataItem,"备注")%>'>  
  </asp:HyperLink>  
  </ItemTemplate>  
  </asp:TemplateColumn>  
  或者  
  <a   href=“list.aspx?id='<%#databinder.eval(container.dataitem,"id")'&child='<%#databinder.eval(container.dataitem,"child")'”>连接</a>   

原以为二楼的可以呢。谁知道我费了一个下午的时间都没搞定。

不过最后小白给我一条正确的一条语句,我模仿着给写下来了。才ok!!

正确答案是::NavigateUrl='<%#"MingDan.spx"+"?"+"subnum="+DataBinder.Eval(Container.DataItem,"sub_num")+"&userId="+DataBinder.Eval(Container.DataItem,"userID") %>'

这个事网上搜了一下!

在使用GridView的模板列时,有时候需要这么使用:

<asp:TemplateField>
    
<ItemTemplate>
        
<input id=ttChk name=ttChk type=checkbox value="<%#Eval("SaleOrderID") %>" onclick="OnTTTableCheck(this)" runat="server" />
    
</ItemTemplate>
</asp:TemplateField>

结果在运行的时候会提示说ttChk这个控件的服务器标记的格式不正确,到底哪里不正确呢?
原来问题出在双引号,把value属性的值用单引号引起来就正确了,或者说把绑定语句用单引号引起来或者不要用引号才行,用双引号就不行。对比:
value="<%#Eval("SaleOrderID") %>    (不行)
value='<%#Eval("SaleOrderID") %>'        (可以)
value=<%#Eval("SaleOrderID") %>        (可以)

抱歉!评论已关闭.