我不确定我是否在这里提出正确的问题,或者我是否提供了足够的信息,因为VS中的调试并没有给我任何帮助!
当我使用gridview运行我的asp.net webform页面时,它会导致system.stackoverflowexception。
这个GV有onPreRender和onRowDataBound事件监听器,我发现当我删除onRowDataBound时这个错误就消失了。
(简短地讲述了这个故事)我发现一行导致了这个问题:
e.Row.Cells[3].Text = "<i aria-hidden=true class=\"glyphicon glyphicon-unchecked text-danger\">";
现在我不知道为什么会导致这种异常。
原地代码:
protected void Gv_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
//SPR / Debrief
if (e.Row.Cells[3].Text.Equals("True"))
{
e.Row.Cells[3].Text = "<i aria-hidden=true class=\"glyphicon glyphicon-check text-success\">";
if (e.Row.Cells[4].Text.Equals("True"))
{
e.Row.Cells[4].Text = "<i aria-hidden=true class=\"glyphicon glyphicon-flag text-danger\">";
}
else
{
e.Row.Cells[4].Text = "";
}
}
else
{
e.Row.Cells[3].Text = "<i aria-hidden=true class=\"glyphicon glyphicon-unchecked text-danger\">"; //THIS IS THE LINE OF INTEREST!
e.Row.Cells[4].Text = "";
}
}
}
由
调用<asp:GridView CssClass="table" ID="GvPlacementReport" runat="server" OnPreRender="GvPlacementReport_PreRender" OnRowDataBound="Gv_RowDataBound" AutoGenerateColumns="false">
</asp:GridView>
我也在页面上使用datatables.net(这太棒了!)和bootstrap(也很棒!)。
如果您需要更多代码,请告诉我 - 对不起我以前从来没有这样的事情!