我有一个用户控件,其中有一个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;}
1条答案
按热度按时间rryofs0p1#
你真的认为值得花这么多时间和精力去做这件事吗?
为什么不考虑将整个gridview Package 在一个更新面板中呢?
这样,你就可以自由地重新加载gv,但是页面将“看起来”像,并且“看起来”像没有发生回发。
我建议不要添加到gv,而是在表单上打开一个区域(甚至隐藏gv)来编辑/添加一行。如果用户点击取消,那么你甚至不需要更新gv。
试试我的这个工作URL-看看编辑是如何工作的,看看重新加载gv是否是一个问题,(提示:这不是问题)。
http://www.kallal.ca/Website11/WebForm2
上面的工作原理/看起来是这样的:
重新刷新网格并不是一个问题,原因是我只是把gridview封装在一个更新面板中。
所以,给予上面的链接一个尝试-回来,并告诉我们在这里,网格视图被重新加载(刷新)从代码背后(服务器端)的事实是一个问题?
所以,您可以在这里保存大量的工作--考虑为网格视图创建一个更新面板。