ページ内に .ascx コントロールがあります。そのコントロールには、展開可能なコンテンツを含む GridView があります。ここまでは順調ですね。すべて展開/すべて折りたたむボタンを作成しようとしたときに問題が発生しました。何らかの理由で、Javascript 関数を .aspx ページに配置する必要があります。そうしないと、関数が見つかりません。
コントロールから gridview データを取得するにはどうすればよいですか? 行ごとに expandOne 関数を呼び出したいのですが、行にアクセスできません。expandOne は 1 行で正常に動作します。
var gvObject = document.getElementById('GridView1');
無効です。
var gvObject = $('GridView1');
グリッドではないもの (gvObject.rows は null) と gvObject.length == 0 を返します
var grid = document.getElementById('<%=GridView1.ClientID %>');
クラッシュします ('GridView1' は現在のコンテキストに存在しません)。
.
ここにHTMLがあります
<asp:GridView ID="GridView1" runat="server" AllowPaging="false" AutoGenerateColumns="False" ShowHeader="false">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<a href="javascript:collapseExpand('Job-<%# Eval("Index") %>');" >
<img id="imageJob-<%# Eval("Index") %>" alt="Click to show/hide orders" border="0" src="../images/plus.png" /></a>
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="TitleCnt" />
<asp:TemplateField>
<ItemTemplate>
<tr><td colspan="100%">
<div id="Job-<%# Eval("Index") %>" style="display:none; left:25px;" class="answer">
<asp:Label Text="Some content" runat="server"></asp:Label>
</div>
</td></tr>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
そしてジャバスクリプト
function expandOne(obj) {
var gvObject = document.getElementById(obj);
var imageID = document.getElementById('image' + obj);
gvObject.style.display = "inline";
imageID.src = "../images/moins.png";
}
function ExpandAll() {
var gvMaster = $('GridView1');
for (i = 0; i < gvMaster.rows.length; i++) {
expandOne('Job' + i);
}
}
どうもありがとう。