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

4

2 回答 2

0

您不能直接在静态方法中访问 Web 控件。您可以使用其他 HTML 表格插件(例如 DataTable)代替。

编辑

页面

    <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);
        }
于 2013-08-30T13:40:34.540 回答
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 刷新网格视图,只需触发隐藏按钮的单击事件。

于 2013-08-30T13:59:32.680 回答