如何在$ .ajax中刷新GridView

时间:2013-08-30 13:29:58

标签: asp.net jquery

如何在下面的方法中使用网格视图控件

public static string ServerSideMethod()
    {
            strSend = "File uploaded sucessfully";
           Database db = new Database();
        db.Add(name);

           GridView1.DataSource = db.LoadCourses();//showing error
    GridView1.DataBind();   //showing error
        }
        return strSend;
      }

我的下面脚本调用ServerSideMethod

 $.ajax(
                {
                    type: "POST",
                    contentType: "application/json; charset=utf-8",
                    url: "UploadResx.aspx/ServerSideMethod",
                    data: "{ sendData: 'ok' }",
                    success: function (result) {

                        alert(result.d);

                    }
                })

请让我知道如何刷新GridView1

2 个答案:

答案 0 :(得分:0)

您无法直接在静态方法中访问Web控件。而不是你可以使用像DataTable这样的其他HTML表插件。

修改

aspx页面

    <asp:ScriptManager ID="ScriptManager1" runat="server">    </asp:ScriptManager>
    <asp:Button ID="btnsearch" runat="server" Text="SEARCH" OnClick="btnsearch_Click" />
    <asp:UpdatePanel ID="UpdatePanel2" runat="server">
        <ContentTemplate>                                                                                                                                     
        <asp:GridView ID="grdjobs" runat="server" AutoGenerateColumns="false" DataKeyNames="Id" AllowPaging="true"  
                PageSize="10" OnPageIndexChanging="grdjobs_PageIndexChanging" GridLines="None" Width="950px" EmptyDataText="No Records Found">
            <Columns>
                <asp:BoundField DataField="jobid" HeaderText="JOB" ItemStyle-HorizontalAlign="Center">  
                    <ItemStyle Width="50px"></ItemStyle>
                </asp:BoundField>                      
                <asp:BoundField DataField="summary" HeaderText="JOB SUMMARY" >
                    <ItemStyle Width="300px"></ItemStyle>
                </asp:BoundField>                                         
            </Columns>
                <RowStyle CssClass="RowStyle" />
                <EmptyDataRowStyle CssClass="EmptyRowStyle" />
                <PagerStyle CssClass="PagerStyle" />
                <SelectedRowStyle CssClass="SelectedRowStyle" />
                <HeaderStyle CssClass="HeaderStyle" />
                <EditRowStyle CssClass="EditRowStyle" />
                <AlternatingRowStyle CssClass="AltRowStyle" />                                    
        </asp:GridView>
        </ContentTemplate>
            <Triggers>
                <asp:AsyncPostBackTrigger ControlID="btnsearch" EventName="Click" /> 
            </Triggers>
        </asp:UpdatePanel>

背后的代码

try
        {
            grdmyjobs.DataSource = GetMyJobs(empid);  // function return dataset
            grdmyjobs.DataBind();
        }
        catch (Exception ex)
        {
            Response.Redirect("error.aspx?errmsg=Error: " + ex.Message);
        }

答案 1 :(得分:0)

我不确定你的意思,但我想你是在尝试用JavaScript刷新gridview,对吧?你可以使用小技巧。

在你的aspx页面中放入div和一个按钮: (注意:如果您使用的是.NET 4.0 +,请将按钮的ClientIDMode设置为静态)

<div id="triggerDiv" style="display:none;">
  <asp:Button ID="triggerButton" runat="server" Text="" ClientIDMode="Static"...
<div>

在您的JavaScript中,您可以完全跳过ajax代码,只需将其命名为:

//if you use .NET framework 4.0+
$('#triggerButton').click();

//if not, use something like this
$('#triggerDiv > input[type="button"]').click();

要点:

  1. 您需要一个不可见的按钮但可以导致回发(如果您使用UpdatePanel将此按钮放在该UpdatePanel的内容模板中,那么回发将导致此特定区域。

  2. 要从JavaScript刷新gridview,只需触发隐藏按钮的click事件即可。