将值传递给jquery对话框

时间:2012-06-25 20:25:50

标签: jquery asp.net

我有一个asp.net gridview包含一个更新面板,说两个字段:

<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>

第二个字段是一个超链接字段,当我点击它时,我可以打开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");
        }
    });
});

这样可以正常工作......是否可以将我的第一个gridview(从上面)lblID的值传递给jquery对话框?现在我只是拉出一个空的对话框屏幕。我希望能够最终获取lblID的值(来自上面的gridview),然后拉出一些数据显示在我的对话框中。

这可能吗?

4 个答案:

答案 0 :(得分:0)

您的模态窗口应该可以从调用页面访问DOM。您应该能够在模态窗口上使用jquery从调用页面检索lblID。

答案 1 :(得分:0)

据我所知,您可以在点击事件中执行以下操作:

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

希望这有助于!!

答案 2 :(得分: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/

答案 3 :(得分: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");
        }
    });
});