9

グリッドビューのすべての行には、Page?id= somethingに移動するボタン/ハイパーリンクがあるはずです。 次に、リダイレクトをキャッチしてページを iframe として印刷する JavaScript があります。この何かは行で既に使用可能です (ただし非表示)。したがって、各フィールドに対して NavigateUrl = "~/Page.aspx?id=" + Id.ToString() のようなことをしたいのですが、ID は LINQ データソースから DataBind() に入力されます。

<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();
4

4 に答える 4

12

次の構文を使用できます。

<asp:HyperLinkField DataNavigateUrlFields="col1,col2" DataNavigateUrlFormatString="gotopage.aspx?p1={0}&p2={1}" Text="Print">

詳細については、MSDNのこちらこちらをご覧ください。

編集:


グリッドを作成するときに正確な URL がわからない場合は、もう少し作業を行う必要があります。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(e.Row.DataItem, "TicketId");
    }
}
于 2012-06-29T14:47:11.487 に答える
6

あなたのNavigateUrl属性に以下を含めてください

NavigateUrl='<%# Eval("Sl_no", 
              "frmAddIntake.aspx?id=Dashboard&intake_id={0}") %>'
于 2012-12-21T16:52:43.290 に答える
0
<asp:TemplateField HeaderText = "Id" ItemStyle-Width="30">
            <ItemTemplate>
                <asp:HyperLink runat="server" NavigateUrl='<%# Eval("TheQueryStringParameterComingFromDB", "~/PageYouWantTONavigateTo.aspx?Id={0}") %>'
                    Text='GiveTextYouWantToDisplay' />
            </ItemTemplate>
        </asp:TemplateField>
于 2015-03-17T07:20:26.710 に答える