如何在不重载整个页面的情况下刷新网格视图ASP.net

fruv7luv  于 2023-04-08  发布在  .NET
关注(0)|答案(1)|浏览(167)

我有一个用户控件,其中有一个gridview和一个用于插入数据的按钮,我想在提交数据后更新网格视图,而无需重新加载整个页面。这是我的用户控件的gridview代码。

<asp:GridView ID="GridViewComplianceComment" runat="server" DataKeyNames="ID" AutoGenerateColumns="false" AllowPaging="false" Width="100%" CssClass="Gridtbl" CellPadding="2"
            OnRowDataBound="GridViewComplianceComment_RowDataBound" OnRowEditing="btnAdditionalNotes_Click">
            <Columns>
                <asp:TemplateField Visible="false">
                    <HeaderStyle HorizontalAlign="Left" />
                    <ItemStyle HorizontalAlign="Left" />
                    <ItemTemplate>
                        <asp:Label runat="server" ID="lblID" Text='<%#Eval("LogID") %>'></asp:Label>
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:BoundField HeaderText="ID" DataField="ID" Visible="false">
                    <ItemStyle VerticalAlign="Middle" HorizontalAlign="Left" />
                    <HeaderStyle VerticalAlign="Middle" HorizontalAlign="Left" />
                </asp:BoundField>
                <asp:BoundField HeaderText="Log ID" DataField="LogID">
                    <ItemStyle VerticalAlign="Middle" HorizontalAlign="Left" Width="100px" />
                    <HeaderStyle VerticalAlign="Middle" HorizontalAlign="Left" Width="100px" />
                </asp:BoundField>
                <asp:BoundField HeaderText="Comments" DataField="StatusComment">
                    <ItemStyle VerticalAlign="Middle" HorizontalAlign="Left" Wrap="true" />
                    <HeaderStyle VerticalAlign="Middle" HorizontalAlign="Left" />
                </asp:BoundField>
                <asp:BoundField HeaderText="Action" DataField="Action" Visible="true">
                    <ItemStyle VerticalAlign="Middle" HorizontalAlign="Left" Wrap="true" />
                    <HeaderStyle VerticalAlign="Middle" HorizontalAlign="Left" />
                </asp:BoundField>
                <asp:BoundField HeaderText="Date Added" DataField="CreatedDate">
                    <ItemStyle VerticalAlign="Middle" HorizontalAlign="Left" Width="100px" />
                    <HeaderStyle VerticalAlign="Middle" HorizontalAlign="Left" Width="100px" />
                </asp:BoundField>
                <asp:BoundField HeaderText="Created By" DataField="CreatedBy">
                    <ItemStyle VerticalAlign="Middle" HorizontalAlign="Left" Width="100px" />
                    <HeaderStyle VerticalAlign="Middle" HorizontalAlign="Left" Width="100px" />
                </asp:BoundField>
                <%--                 <asp:TemplateField HeaderText="" ItemStyle-Width="100">
        <ItemTemplate>
            <asp:Button ID="btnAdditionalNotes" runat="server" Text="Additional Notes" Visible= false OnClick="btnAdditionalNotes_Click"/>
        </ItemTemplate>
    </asp:TemplateField>--%>
            </Columns>
        </asp:GridView>
        <asp:Button ID="btnAdditionalNotes" runat="server" Text="Additional Notes" Visible="false" Style="float: right; border-left: 2px solid white; border-radius: 5px;" CssClass="bt-or" OnClick="btnAdditionalNotes_Click" />

        <asp:Panel runat="server" ID="Message" Visible="False">
            <div style="padding: 10px;">
                <asp:Label runat="server" ID="MessageText1" Text="No records found."></asp:Label>
            </div>
        </asp:Panel>
    </div>

这是我 AJAX 保存数据的C#代码

function ShowAdditionalcommentsdiv(Logid, Status, AdditionalNoteComments) {
    //debugger;
    $.ajax({
        type: "POST",
        url: "/Search/DDetail.aspx/SaveAdditionalNote",
        data: JSON.stringify({
            logId: Logid,
            status: Status,
            additionalNoteComments: AdditionalNoteComments,
            comment: ""
        }),
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (data) {
            //debugger;
            if (data.d != 0) {
                alert("Additional comment added");
                /*window.location.reload();*/

                //ReloadGridView()
            }
        }
    });
}

public static int getName(int getName,int getName,int getName,int getName){try { DriverBasicInfoController _driverbasicinfocontroller = new DriverBasicInfoController(new DriverBasicInfoRepositary());_driverbasicinfocontroller.UpdateComplianceStatusComment(logId,status,additionalNoteComments,comment);//return JsonConvert.SerializeObject(additionalNoteComments);响应= logId;//ComplianceAdditionalCommentList(logId);} catch(Exception ex){ SafetyLogger.Logger.WriteErrorLog(SafetyPortal.Loggers.LogEntity.LogTypes.Exception,“Some Error Occured in getOwnerDetails”,ex);return 0;} return response;}

rryofs0p

rryofs0p1#

你真的认为值得花这么多时间和精力去做这件事吗?
为什么不考虑将整个gridview Package 在一个更新面板中呢?
这样,你就可以自由地重新加载gv,但是页面将“看起来”像,并且“看起来”像没有发生回发。
我建议不要添加到gv,而是在表单上打开一个区域(甚至隐藏gv)来编辑/添加一行。如果用户点击取消,那么你甚至不需要更新gv。
试试我的这个工作URL-看看编辑是如何工作的,看看重新加载gv是否是一个问题,(提示:这不是问题)。
http://www.kallal.ca/Website11/WebForm2
上面的工作原理/看起来是这样的:

重新刷新网格并不是一个问题,原因是我只是把gridview封装在一个更新面板中。
所以,给予上面的链接一个尝试-回来,并告诉我们在这里,网格视图被重新加载(刷新)从代码背后(服务器端)的事实是一个问题?
所以,您可以在这里保存大量的工作--考虑为网格视图创建一个更新面板。

相关问题