我的gridview中的每一行应该有一个按钮/超链接,导航到Page?id = something
然后有一些 javascript捕获重定向并将页面打印为iframe.
这个东西已经可以在行中(但隐藏).
所以我想为每个字段做一些像NavigateUrl =“〜/ Page.aspx?id =”Id.ToString()的东西,但是事情就是从LINQ数据源中填充DataBind()中的Id.
然后有一些 javascript捕获重定向并将页面打印为iframe.
这个东西已经可以在行中(但隐藏).
所以我想为每个字段做一些像NavigateUrl =“〜/ Page.aspx?id =”Id.ToString()的东西,但是事情就是从LINQ数据源中填充DataBind()中的Id.
<asp:GridView ID="gridleitNidurstada" runat="server" GridLines="None" AllowPaging="True" CssClass="mGrid" PagerStyle-CssClass="pgr" DataKeyNames="Id" OnRowDataBound="gridLeit_RowDataBound" AllowSorting="True" SortedAscendingHeaderStyle-CssClass="sortasc-header" SortedDescendingHeaderStyle-CssClass="sortdesc-header" OnSorting="gridleitNidurstada_Sorting" CurrentSortField="Id" CurrentSortDir="Ascending" AutoGenerateColumns="False"> <Columns> <asp:BoundField datafield="Id" HeaderText="Id" SortExpression="Id" Visible="false"/> </ItemTemplate> </asp:TemplateField> <asp:HyperLinkField HeaderText="Print" Text="Print" **anything here?**/> </Columns> <PagerStyle CssClass="pgr"></PagerStyle> <SortedAscendingHeaderStyle CssClass="sortasc-header"></SortedAscendingHeaderStyle> <SortedDescendingHeaderStyle CssClass="sortdesc-header"></SortedDescendingHeaderStyle> </asp:GridView>
绑定是这样的:我可以在那里做吗?
还是在rowbound事件?
IQueryable<model.someClass> someClass = from m in preparePredicate() select new model.someClass { Id = m.id,... }; gridleitNidurstada.DataSource = someClass; gridleitNidurstada.DataBind();
解决方法
您可以使用以下语法:
<asp:HyperLinkField DatanavigateUrlFields="col1,col2" DatanavigateUrlFormatString="gotopage.aspx?p1={0}&p2={1}" Text="Print">
编辑:
如果您在创建网格时不知道确切的网址,您将需要做更多的工作.
我在本周工作的一个例子,使用了一个itemtemplate.但是为了使用这个,你必须将EnableSortingAndPagingCallbacks设置为false.并为此做代码背后做一些额外的工作.
我只在我的网格上使用分页,所以我可以提供这个示例.
标记:
<asp:GridView ID="gridViewTicketsClosed" runat="server" CellPadding="4" ForeColor="#333333" GridLines="None" EnableSortingAndPagingCallbacks="False" AutoGenerateColumns="False" AllowPaging="True" OnRowDataBound="gridViewTicketsClosed_RowDataBound" OnPageIndexChanging="GridViewPageIndexChanging"> <PagerSettings Mode="NextPrevIoUs" NextPageText="Next" PrevIoUsPageText="PrevIoUs" /> <Columns> <asp:BoundField datafield="TicketId" HeaderText="Nr."> <ItemStyle Width="20px" /> </asp:BoundField> <asp:BoundField datafield="DateStarted" DataFormatString="{0:dd/MM/yyyy HH:mm}" HeaderText="Date"> <ItemStyle Width="100px" /> </asp:BoundField> <asp:BoundField datafield="President" HeaderText="President"> <ItemStyle Width="100px" /> </asp:BoundField> <asp:BoundField datafield="TicketTypeId" HeaderText="TicketType"></asp:BoundField> <asp:TemplateField> <ItemTemplate> <asp:HyperLink ID="lnkActionLog" runat="server" Text="Log"></asp:HyperLink> </ItemTemplate> </asp:TemplateField> </Columns> </asp:GridView>
代码背后:
protected void gridViewTicketsClosed_RowDataBound(object sender,GridViewRowEventArgs e) { if (e.Row.RowType == DataControlRowType.DaTarow) { var hyperLink = e.Row.FindControl("lnkActionLog") as HyperLink; if (hyperLink != null) hyperLink.NavigateUrl = CreateShowActionLogUrl(e.Row) + "?id="+ DataBinder.Eval(row.DataItem,"TicketId"); } }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。