0

質問はほとんどそれをすべて言います。私のaspxページにはGridViewがあり、Columnsの下にはたくさんのBoundFieldsがあり、そのうちの1つはTemplateFieldです

        <asp:TemplateField HeaderText = "Status">
            <ItemTemplate>
                <asp:HyperLink ID = "HyperLink1" runat = "server" Target = "_blank"
                    NavigateUrl = '<%# Eval("URL") %>'
                    Text = '<%#Eval("Status") %>'>
                </asp:HyperLink>
            </ItemTemplate>
        </asp:TemplateField>

ここで、テキストの評価対象に応じて、このハイパーリンクを別の画像にマップする必要があります。たとえば、'Success' は代わりに大きな笑顔の顔を表示し、'Failed' は不機嫌そうな顔を表示します。どうすればこれを達成できますか?

ご覧いただきありがとうございます。

4

4 に答える 4

2

次のようなハイパーリンクに画像を配置できます

<img src='/images/status/<%#Eval("Status") %>.jpg' />

ステータスごとに名前で異なる画像を作成するだけです。それ以外の場合は、DataBindイベントで何かを行う必要があります。

于 2012-11-08T23:57:00.577 に答える
1

これを試して

protected void myGridView_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        HyperLink HyperLink1 = e.Row.FindControl("HyperLink1");
        if(SomeText == "Success")
          HyperLink1.NavigateUrl = "Url to Smiley";
        else
          HyperLink1.NavigateUrl = "Url to Frowney";
    }
}
于 2012-11-08T23:57:12.657 に答える
0

ImageUrlプロパティを設定しようとしている場合は、RowDataBoundイベントを使用することをお勧めします。ハンドラーメソッドは次のようになります。

protected void questionsGridView_RowDataBound(object sender, System.Web.UI.WebControls.GridViewRowEventArgs e)
{
    DataSourceDataType row;
    HyperLink hyperLink1;

    if (e.Row.RowType == DataControlRowType.DataRow & e.Row.DataItem is DataSourceDataType)
    {
        row = (DataSourceDataType)e.Row.DataItem;
        hyperLink1 = (HyperLink)e.Row.FindControl("HyperLink1");

        hyperLink1.ImageUrl = (row.IsSuccess) ? "~/images/success.png" : "~/images/failure.png";
    }
}

私が使用したもう1つのトリックは、バインドするデータオブジェクトを変更して、使用するURLを示すプロパティを持つようにすることです。

partial class DataSourceDataType
{
    public string SuccessImgURL
    {
        get
        {
            return (IsSuccess) ? "~/images/success.png" : "~/images/failure.png";
        }
    }
}

次に、そのプロパティにバインドします。

注:IsSuccess独自のフィールド名またはブール条件に置き換える必要があります。
私はこれをLINQtoSQLオブジェクトでよく使用するため、プロパティの追加は部分クラスを使用して別のファイルで実行できます。このようにして、LINQtoSQLツールが追加を削除することを心配する必要はありません。

于 2012-11-09T02:10:22.513 に答える
0
HyperLink HyperLink1 = (HyperLink)e.Row.FindControl("HyperLink1");

    switch (HyperLink1.Text)
        {
             case "Completed":
                  HyperLink1.ImageUrl = "Images\\Success.png";
                  HyperLink1.ToolTip = "Completed";

ToolTip プロパティは、画像の代替テキストにマップされます。

私を始めさせてくれたcodingbizに感謝します。

于 2012-11-09T01:36:05.143 に答える