4

名前で製品を検索するページがあります。多くのページで、製品コードを扱っています。ユーザーが製品コードを知らない場合は、このページにアクセスして名前で検索し、結果の 1 つを選択して元のページに戻るようにしています。

名前による検索の結果で、製品コードのパラメーターを使用して、特定のページにリダイレクトする HyperLinkField を設定しました。

私のコードは次のようなものです:

 <asp:GridView ID="GridView1" Runat="server" 
  DataSource='<%# GetData(pName.Text) %>' AutoGenerateColumns="False">
    <Columns>
        <asp:BoundField DataField="Name">
            <ItemStyle HorizontalAlign="Center" 
              VerticalAlign="Middle"></ItemStyle>
        </asp:BoundField>
        <asp:BoundField  DataField="Code"></asp:BoundField>
        <asp:ImageField ControlStyle-Width="150px"  ControlStyle-Height="150px" DataImageUrlField="PictureURL" ></asp:ImageField>
        <ASP:HYPERLINKFIELD text=">>" datanavigateurlfields="Code"  datanavigateurlformatstring="priceUpdater.aspx?ProductCode={0}"></ASP:HYPERLINKFIELD> 
    </Columns>
</asp:GridView>

GetData は、フィールド、名前、コード、画像などを含む Product 型のオブジェクトを返す関数です。

ご覧のとおり、HYPERLINKFIELD のこのリンクは、製品コードのパラメーターを使用して priceUpdater というページにリダイレクトされます。

このページを動的にしたい。このような検索ページにパラメーターを追加しようとしました

 <%string pageRequested = Page.Request.QueryString["SearchScreen"];%>

そして今、次のようにHYPERLINKを使用しようとしています:

<ASP:HYPERLINKFIELD text=">>" datanavigateurlfields="Code"  datanavigateurlformatstring="<%=pageRequested%>.aspx?ProductCode={0}"></ASP:HYPERLINKFIELD> 

しかし、リンクが参照するページは、書かれているのと同じプレーン テキストです ( http://mysite.com/%3C%=pageRequested% >.aspx?ProductCode=2450)。

どうすればこれを機能させることができますか?

ありがとうございました!

4

3 に答える 3

3

使用する場合は、メソッドによって返されるデータソース オブジェクトを、クエリ文字列パラメーターに付属する値でHyperLinkField拡張する必要があります。GetDatapageRequested

その場合、HyperLinkField のマークアップは次のようになります。

<asp:HyperLinkField text=">>" 
    datanavigateurlfields="PageRequested,Code"
    datanavigateurlformatstring="{0}.aspx?ProductCode={1}"></asp:HyperLinkField>

PageRequestedただし、これは、メソッドによって返されるオブジェクトに public フィールドまたはプロパティとして追加する場合にのみ機能しますGetData

これがオプションでない場合は、"LinkField"から継承した独自のコントロールを実装するか、 Nitinによって提案されたとおりにDataControlField使用する必要があります。ItemTemplate

于 2013-07-29T19:44:31.433 に答える
1

それを試してください:

<asp:TemplateField>                     
<ItemTemplate>
    <ASP:HYPERLINK text=">>" NavigateUrl='<%# String.Format("~/{0}.aspx?ProductCode={1}",Page.Request.QueryString["SearchScreen"],Eval("Code")) %>'></ASP:HYPERLINK> 
</ItemTemplate>
</asp:TemplateField>
于 2013-07-23T07:27:53.377 に答える