2013-08-30 36 views
0

如何使用网格视图控制下面的方法

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

+0

一个问题,如何在一个静态函数中访问asp.net控件(GridView1)? –

+0

是的,我知道我们不能使用,但你能告诉我如何刷新网格更新记录。 – user2717258

+0

你可以使用更新面板控制,这将更新网格,而不刷新页面..如果你需要代码smple..let我知道..我会更新aswer –

回答

0

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

编辑

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); 
     } 
+0

你有任何示例代码? – user2717258

+0

更新了代码示例,在示例中,当点击搜索按钮时,网格将刷新数据而不刷新页面... –

0

我不太清楚你的意思,但我想你想从JavaScript刷新你的GridView,对?你可以使用一些小技巧。

为ASPX页面放股利和它里面的按钮: (注:按钮的设置的ClientIDMode为静态如果你正在使用.NET 4.0+)

<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,只需触发隐藏按钮的单击事件。

+0

我在哪里放置了我的网格视图? – user2717258

+0

并不重要。在APSX页面的任何地方。或者 - 如果您使用的是UpdatePanel,那么您必须将我的代码和GridView添加到内容模板中。 –