0

我有一个 jQuery 对话框,当按下按钮时会弹出。我有一个 GridView,其中包含来自我的数据库的结果。我想让 GridView 显示我搜索的结果。因此,我添加了 aasp:textbox和 a asp:button,想法是当我按下按钮时,它会调用与我的数据库连接的函数,然后在 GridView 中显示结果。所以基本上,当 jQuery 弹出时,它应该显示一个空的 GridView(或无),然后当我搜索某些内容时,它应该显示结果。这是我的 main.aspx 代码:

 <div id="ViewPlaces">
                <asp:TextBox ID="viewPlaceTextbox"  runat="server" placeholder="Search..." />
                <asp:Button ID="viewPlaceBtn" OnClick="getSearchedPlace" runat="server" Text="Search for place" />
                        <asp:GridView ID="GridView1" AllowPaging="true" GridLines="None" CssClass="mGrid" PagerStyle-CssClass="pgr" AlternatingRowStyle="alt" runat="server" AllowSorting="True"
                            AutoGenerateColumns="False"
                            Width="750px"
                            CausesValidation="False" ShowHeaderWhenEmpty="true" ShowHeader="true">
                           <Columns>
                                <asp:BoundField DataField="place_id" HeaderText="Id" ReadOnly="True" />
                                <asp:BoundField DataField="place_name" HeaderText="Name" />
                                <asp:BoundField DataField="place_city" HeaderText="City" />
                                <asp:BoundField DataField="place_land" HeaderText="Land" />
                                <asp:BoundField DataField="place_desc" HeaderText="Description" />                        
                            </Columns>
                        </asp:GridView>
            </div>

这是jQuery代码:

$('#ViewPlaces').dialog(dialogOpts5);
        $.fx.speeds._default = 500;
        $(function () {
            $("#ViewPlaces").dialog({
                autoOpen: false,
                show: "blind",
                hide: "explode",
            });

            $("#viewallplaces").click(function () {
                $("#ViewPlaces").dialog("open");
                return false;
            });
        });

在我的 c# 代码中,问题是如果我不调用从数据库中获取结果的函数Page_Load,那么当我按下打开 jQuery 对话框的按钮时,不会加载 GridView。否则,函数如下所示:

 protected void getPlaces()
{
    List<Place> pl = new List<Place>();
    pl = functions.getPlaces();
    GridView1.DataSource = pl;
    GridView1.DataBind();
}

getPlaces()函数返回一个地点列表。这不是问题,它有效,我已经测试过了。

4

2 回答 2

1

在这种情况下,您将使用 webforms 控件,如 gridview 和 updatepanel 并放弃 jquery,或者您将使用基本的 HTML 元素并连接 jquery 来调用端点(url)并呈现结果客户端。但不是两者兼而有之。

于 2012-11-28T13:25:51.327 回答
1

如果您只在 gridview 中显示数据,您可以有一个单独的页面来生成 gridview。

想象一下这个页面只包含gridview。您可以对页面使用 jquery ajax 调用,将 url 中的 gridview 参数作为查询字符串传递。然后在gridview页面的页面加载上,您将检查querystring参数,然后使用它们来查询数据库中的数据,然后使用数据绑定您的gridview。

ajax 调用将返回 html,您只需将 html 注入您的弹出窗口

$.ajax({
 url: "yourgridpage.aspx?dat1=YourValue1&dat2=YourVal2"
}).done(data,function() { 
 $.popUp.html(data);
});
于 2012-11-28T16:48:09.140 回答