1

私は2つのフィールドを持つ更新パネルをラップしたasp.netグリッドビューを持っています:

<asp:TemplateField Visible="False">
  <ItemTemplate>
    <asp:Label ID="lblID" runat="server" style="display:none" 
      Text='<%# DataBinder.Eval(Container, "DataItem.ID") %>' Width=".05px">
    </asp:Label>
  </ItemTemplate>
  <ItemStyle Width="1%" />
  <ControlStyle Width="0px" />
  <HeaderStyle Width="0px" />
</asp:TemplateField>

<asp:TemplateField HeaderText="#">
  <ItemTemplate>
  <asp:HyperLink ID="hlSortOrder" runat="server" CssClass="hlDialog" NavigateUrl="javascript:return false;"
    Text='<%# DataBinder.Eval(Container, "DataItem.SortOrder") %>'>
  </asp:HyperLink>
  </ItemTemplate>
  <FooterStyle HorizontalAlign="Center" />
  <HeaderStyle HorizontalAlign="Center" />
  <ItemStyle HorizontalAlign="Center" />
</asp:TemplateField>

2 番目のフィールドはハイパーリンク フィールドで、クリックすると jquery ui ダイアログ ボックスが開きます。私はそれを次のように呼びます:

$(".hlDialog").click(function () {
    $('#dialog').dialog({
        draggable: true,
        modal: true,
        height: 600,
        width: 800,
        title: "Log file",
        open: function (type, data) {
            $(this).parent().appendTo("form");
        }
    });
});

これは正常に動作しますが...最初のグリッドビューの値(上から)lblIDをjqueryダイアログボックスに渡すことは可能ですか? 現在、空のダイアログ画面を表示しています。最終的に (上記のグリッドビューから) lblID の値を取得し、いくつかのデータを取得してダイアログ ボックスに表示できるようにしたいと考えています。

これは可能ですか?

4

4 に答える 4

0

モーダルウィンドウは、呼び出しページからDOMにアクセスできる必要があります。モーダルウィンドウでjqueryを使用して、呼び出し元のページからlblIDを取得できるはずです。

于 2012-06-25T20:30:07.637 に答える
0

サイズはこちらをご試着ください。どこにどのような値が必要なのか完全にはわからないため、既存の関数に少し追加しています。

<% /* this field could be a simpler <asp:BoundField> or something similar... */ %>
<asp:TemplateField Visible="False">
  <ItemTemplate>
    <asp:Label ID="lblID" runat="server" style="display:none" 
      Text='<%# DataBinder.Eval(Container, "DataItem.ID") %>' Width=".05px">
    </asp:Label>
  </ItemTemplate>
  <ItemStyle Width="1%" />
  <ControlStyle Width="0px" />
  <HeaderStyle Width="0px" />
</asp:TemplateField>

$(".hlDialog").click(function () {
    var that = $(this),
        thatValue = that.val(),
        lblIDValue = that.prev.text(), //should be accurate depending on what else is happening on the page
        aux = 0;

    $('#dialog').dialog({
        draggable: true,
        modal: true,
        height: 600,
        width: 800,
        title: "Log file",
        open: function (type, data) {
            var el = $('<div>').addClass('hiMom').text( thatValue + ' ' + lblIDValue );
            $(this).prepend(el).parent().appendTo("form");
        }
    });
});
于 2012-06-25T20:42:39.317 に答える
0

私の知る限り、クリックイベントで以下のようなことができます:

$(".hlDialog").click(function () {
    // First parent() is for "td", next for "tr"
    var lblID = $(this).parent().parent().find("span").html();
 .
 .
 .
});

お役に立てれば!!

于 2012-06-25T20:31:43.550 に答える
0

http://blog.nemikor.com/2009/04/08/basic-usage-of-the-jquery-ui-dialog/のチュートリアルを見てください。

主に:

$(document).ready(function() {
    var $dialog = $('<div></div>')
        .html('This dialog will show every time!')
        .dialog({
            autoOpen: false,
            title: 'Basic Dialog'
        });

    $('#opener').click(function() {
        $dialog.dialog('open');
        // prevent the default action, e.g., following a link
        return false;
    });
});

これにより、ダイアログ ボックスで HTML を設定できます。DOM で lblID を取得します。

別の回答の値を使用すると、DOM で次のように取得できます。

var lblID = $(this).parent().parent().find("span").html();

次に、その値を .html に使用します

.html(lblID)

例はこちら: http://example.nemikor.com/basic-usage-of-the-jquery-ui-dialog/

于 2012-06-25T20:32:30.710 に答える