2

SQLクエリの結果にバインドされているASP.net 2.0 GridViewコントロールを使用しているため、次のようになります。

<asp:GridView ID="MySitesGridView" runat="server" AutoGenerateColumns="False" DataSourceID="InventoryDB" AllowSorting="True" CellPadding="4" ForeColor="#333333" GridLines="None" OnRowCommand="GridView1_RowCommand" OnRowDataBound="siteRowDataBound">
        <Columns>
            <asp:BoundField DataField="Server" HeaderText="Server"/>
            <asp:BoundField DataField="Customer" HeaderText="Customer" SortExpression="Customer" />
            <asp:BoundField DataField="PublicIP" HeaderText="Site Address" DataFormatString="&lt;a href='http://{0}/foo'&gt;Go To Site&lt;/a&gt;" />
        </Columns>
</asp:GridView>

ご覧のとおり、フォーマット文字列を使用して、列の 1 つ (PublicIP フィールドにバインドされた列) にアドレスを含むリンクを表示しています。

&lt;a href='http://{0}/foo'&gt;Go To Site&lt;/a&gt;

問題は次のとおりです。結果セットの他の列の 1 つと、リンクの PublicIP 列を使用する必要がありますが、フォーマット文字列でそれを使用できるようにする方法がわかりません。基本的に、結果セットから 2 つの列にバインドされた列が必要です。明確にするために、次のようなものが必要です。

&lt;a href='http://{0}/{1}'&gt;Go To Site&lt;/a&gt;

{1} は、他の列の値です。これをきれいに達成する方法はありますか (フォーマット文字列を使用しない場合でも)? 私も TemplateFields の使用を検討しましたが、それらを使用する簡単な方法もわかりません。

4

3 に答える 3

2

TemplateFields は行く方法です。

私は通常、いくつかのオブジェクト変数を渡し、結果の文字列を計算するページにプライベート文字列関数を用意することを好みます。

<a href="<%# CalculateUrl(Eval("PublicIP"), Eval("Customer")) %>">site</a>

コードビハインドで:

private string CalculateUrl(object PublicIP, object Customer)
{
    if (PublicIP==null || PublicIP==DBNull.Value)
        return "";
    if (Customer==null || Customer==DBNull.Value)
        return "";
    return "http://" + PublicIP.ToString() + "/" + Customer.ToString();
}

利点は、関数を共通の親クラスで共有できること、またはユーティリティ クラスの静的パブリック関数として共有できることです。

于 2008-11-11T22:22:34.567 に答える
1

Eval と組み合わせて TemplateField を試しましたか?

<asp:TemplateField>
    <ItemTemplate>
        <a href='<%#Eval("PublicIP")/<%# Eval("Customer") %>'>Go to site</a>
    </ItemTemplate>
</asp:TemplateField>
于 2008-11-11T22:13:55.210 に答える
0

実際のリンクが必要な場合は、複数のフィールドを指定するために使用できるプロパティDataNavigateUrlFields(複数形)を持つHyperLinkFieldを使用することもできます。次に、DataNavigateUrlFormatStringを{0}、{1}などを含むものに設定します。これがリンクになります。リンクテキストには、DataTextFormatStringとDataTextFieldを使用します(単数形、理由は聞かないでください)。これはおそらくTemplateFieldよりも少し簡単です(ただし柔軟性は劣ります)。

于 2008-11-11T23:15:19.640 に答える