asp.net – 如何在gridview中将navigateurl添加到超链接

前端之家收集整理的这篇文章主要介绍了asp.net – 如何在gridview中将navigateurl添加到超链接前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我的gridview中的每一行应该有一个按钮/超链接,导航到Page?id = something
然后有一些 javascript捕获重定向并将页面打印为iframe.
这个东西已经可以在行中(但隐藏).
所以我想为每个字段做一些像NavigateUrl =“〜/ Page.aspx?id =”Id.ToString()的东西,但是事情就是从LINQ数据源中填充DataBind()中的Id.
  1. <asp:GridView ID="gridleitNidurstada" runat="server" GridLines="None" AllowPaging="True"
  2. CssClass="mGrid" PagerStyle-CssClass="pgr" DataKeyNames="Id" OnRowDataBound="gridLeit_RowDataBound"
  3. AllowSorting="True" SortedAscendingHeaderStyle-CssClass="sortasc-header" SortedDescendingHeaderStyle-CssClass="sortdesc-header"
  4. OnSorting="gridleitNidurstada_Sorting" CurrentSortField="Id" CurrentSortDir="Ascending"
  5. AutoGenerateColumns="False">
  6. <Columns>
  7. <asp:BoundField DataField="Id" HeaderText="Id" SortExpression="Id" Visible="false"/>
  8. </ItemTemplate>
  9. </asp:TemplateField>
  10. <asp:HyperLinkField HeaderText="Print" Text="Print" **anything here?**/>
  11. </Columns>
  12. <PagerStyle CssClass="pgr"></PagerStyle>
  13. <SortedAscendingHeaderStyle CssClass="sortasc-header"></SortedAscendingHeaderStyle>
  14. <SortedDescendingHeaderStyle CssClass="sortdesc-header"></SortedDescendingHeaderStyle>
  15. </asp:GridView>

绑定是这样的:我可以在那里做吗?
还是在rowbound事件?

  1. IQueryable<model.SomeClass> someClass =
  2. from m in preparePredicate()
  3. select new model.SomeClass
  4. {
  5. Id = m.id,...
  6. };
  7. gridleitNidurstada.DataSource = someClass;
  8. gridleitNidurstada.DataBind();

解决方法

您可以使用以下语法:
  1. <asp:HyperLinkField DatanavigateUrlFields="col1,col2" DatanavigateUrlFormatString="gotopage.aspx?p1={0}&p2={1}" Text="Print">

更多信息herehere在MSDN上.

编辑:

如果您在创建网格时不知道确切的网址,您将需要做更多的工作.
我在本周工作的一个例子,使用了一个itemtemplate.但是为了使用这个,你必须将EnableSortingAndPagingCallbacks设置为false.并为此做代码背后做一些额外的工作.
我只在我的网格上使用分页,所以我可以提供这个示例.
标记

  1. <asp:GridView ID="gridViewTicketsClosed" runat="server" CellPadding="4" ForeColor="#333333"
  2. GridLines="None" EnableSortingAndPagingCallbacks="False" AutoGenerateColumns="False"
  3. AllowPaging="True" OnRowDataBound="gridViewTicketsClosed_RowDataBound" OnPageIndexChanging="GridViewPageIndexChanging">
  4. <PagerSettings Mode="NextPrevIoUs" NextPageText="Next" PrevIoUsPageText="PrevIoUs" />
  5. <Columns>
  6. <asp:BoundField DataField="TicketId" HeaderText="Nr.">
  7. <ItemStyle Width="20px" />
  8. </asp:BoundField>
  9. <asp:BoundField DataField="DateStarted" DataFormatString="{0:dd/MM/yyyy HH:mm}" HeaderText="Date">
  10. <ItemStyle Width="100px" />
  11. </asp:BoundField>
  12. <asp:BoundField DataField="President" HeaderText="President">
  13. <ItemStyle Width="100px" />
  14. </asp:BoundField>
  15. <asp:BoundField DataField="TicketTypeId" HeaderText="TicketType"></asp:BoundField>
  16. <asp:TemplateField>
  17. <ItemTemplate>
  18. <asp:HyperLink ID="lnkActionLog" runat="server" Text="Log"></asp:HyperLink>
  19. </ItemTemplate>
  20. </asp:TemplateField>
  21. </Columns>
  22. </asp:GridView>

代码背后:

  1. protected void gridViewTicketsClosed_RowDataBound(object sender,GridViewRowEventArgs e)
  2. {
  3. if (e.Row.RowType == DataControlRowType.DataRow)
  4. {
  5. var hyperLink = e.Row.FindControl("lnkActionLog") as HyperLink;
  6. if (hyperLink != null)
  7. hyperLink.NavigateUrl = CreateShowActionLogUrl(e.Row) + "?id="+ DataBinder.Eval(row.DataItem,"TicketId");
  8. }
  9. }

猜你在找的asp.Net相关文章