0

ページ内に .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);
    }
}

どうもありがとう。

4

1 に答える 1

0

.Net 4 を使用している場合は、GridView のClientIDMode="Static". これにより、id プロパティが "GridView1" であるクライアント上のテーブルが作成されます。次に、これでテーブルが取得されます。

var gvObject = document.getElementById('GridView1');

jQuery の選択も機能しますが、# 文字を含める必要があります。

var gvObject = $('#GridView1');

ClientIDMode の詳細については、http://msdn.microsoft.com/en-us/library/system.web.ui.control.clientidmode.aspxを参照してください。

于 2012-06-26T15:52:50.107 に答える