0

画像、ラベル、非表示フィールドを含む動的に作成されたコントロールの値にアクセスすることに困惑しています。

これは私がやっていることです:

HTML
<%@ Control Language="C#" AutoEventWireup="true" CodeFile="ReportIcon.ascx.cs" Inherits="ReportIcon" %>
<div class="report-icons" style="background:white; color:#014886; border-radius:5px 10px 5px 10px / 10px 5px 10px 5px; width:255px; position:relative; text-align:Left; visibility:visible; padding:5px; margin:5px; overflow: hidden">
    <asp:Image ID="PDFImage" runat="server" ImageUrl="~/Images/pdfIcon.png"/> 
    <div style="position:absolute; left:64px; top:27px; max-width:196px; overflow: auto">              
        <asp:Label ID="ReportNameLabel" style="font-size:12pt; padding-left:15px" runat="server" Text="Report"></asp:Label>
        <br />            
        <asp:HiddenField ID="FilePathHiddenField" runat="server" />
    </div>
</div>

Code Behind
public partial class ReportIcon : System.Web.UI.UserControl
{
    public string reportName { get; set; }
    public string filePath { get; set; }

    protected void Page_Load(object sender, EventArgs e)
    {
        ReportNameLabel.Text = this.reportName;
        FilePathHiddenField.Value = this.filePath;
    }
}

JQuery
function setupMouseEvents() {
    $('.report-icons').hover(
        function () { $(this).css({ 'background': '#B8B8B8' }) },
        function () { $(this).css({'background': 'white' })}
    );

    $('.report-icons').click(
        function () {
            $(this).siblings().removeClass("selected");
            $(this).addClass("selected");
            alert($('#<%=FilePathHiddenField.ClientID%>').val());
        }
    );
};

function init() {
    setupMouseEvents();
};

$(document).ready(function () {
    init();
});

問題は、マスターページを使用しているため、html がコンテンツプレースホルダーに含まれていることだと思います。

ブラウザーで HTML を見ると、隠しフィールドの ID は次のとおりです。

jQueryでこれらの値にアクセスする方法を知っている人はいますか?

4

1 に答える 1

2

jquery の ID セレクターに # 記号を追加する必要があります

 alert($('#' + '<%=FilePathHiddenField.ClientID%>').val());

また

 var id = '<%=FilePathHiddenField.ClientID%>';
 alert($('#' + id).val());

Asp.net 4.0 の場合

Asp.net 4.0 バージョンを使用している場合は、ASP.NET 4.0 クライアント ID 機能を参照してください。

Control.ClientIDMode プロパティ- ClientID プロパティの値を生成するために使用されるアルゴリズムを取得または設定します。

AutoID ClientID 値は、各親名前付けコンテナーの ID 値をコントロールの ID 値と連結することによって生成されます。コントロールの複数のインスタンスがレンダリングされるデータ バインディングのシナリオでは、増分値がコントロールの ID 値の前に挿入されます。各セグメントはアンダースコア文字 (_) で区切られます。このアルゴリズムは、ASP.NET 4 より前のバージョンの ASP.NET で使用されていました。

静的 ClientID 値は、ID プロパティの値に設定されます。コントロールが名前付けコンテナーである場合、そのコントロールは、それに含まれるすべてのコントロールの名前付けコンテナーの階層の最上位として使用されます。

Predictable このアルゴリズムは、データ バインド コントロール内のコントロールに使用されます。ClientID 値は、親ネーミング コンテナーの ClientID 値をコントロールの ID 値と連結することによって生成されます。コントロールが複数の行を生成するデータ バインド コントロールの場合、ClientIDRowSuffix プロパティで指定されたデータ フィールドの値が末尾に追加されます。GridView コントロールの場合、複数のデータ フィールドを指定できます。ClientIDRowSuffix プロパティが空白の場合、データ フィールド値の代わりに連番が末尾に追加されます。この数値はゼロから始まり、行ごとに 1 ずつ増加します。各セグメントはアンダースコア文字 (_) で区切られます。

Inherit コントロールは、NamingContainer コントロールの ClientIDMode 設定を継承します。

于 2012-05-08T19:14:44.267 に答える