[英]ASP.NET Gridview rowdatabound Stackoverflow exception
我有一個從SQL數據源填充的gridview。
每當我打開頁面時,我都會在gridview rowdatabound
得到stackoverflow
異常。
是什么導致了這個問題?
Search.aspx :
<asp:GridView ID="GridView1" runat="server" AllowPaging="True" AllowSorting="True" AutoGenerateColumns="False" CellPadding="4" DataSourceID="ConsultsSQLDataSource" ForeColor="#333333" GridLines="None" OnRowDataBound="GridView1_RowDataBound">
<AlternatingRowStyle BackColor="White" />
<Columns>
<asp:BoundField DataField="DATA" HeaderText="Data" SortExpression="DATA" />
<asp:BoundField DataField="LOCAL" HeaderText="Local" SortExpression="LOCAL" />
<asp:BoundField DataField="URGENCIA" HeaderText="Urgencia" SortExpression="URGENCIA" />
<asp:BoundField DataField="ESTADO" HeaderText="Estado" SortExpression="ESTADO" />
<asp:HyperLinkField HeaderText="Pagamento" NavigateUrl="a" Text="Link" Visible="False" />
<asp:BoundField DataField="IDPAGAMENTO" SortExpression="IDPAGAMENTO" Visible="False" />
</Columns>
</asp:GridView>
代碼隱藏 :
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
string value = e.Row.Cells[2].Text;
switch(value)
{
case "3":
e.Row.Cells[3].Text = "Waiting Payment";
HyperLinkField hp = (HyperLinkField)GridView1.Columns[4];
GridView1.Columns[4].Visible = true;
GridView1.Columns[5].Visible = true;
hp.NavigateUrl = "~/Account/Payments/Payment?PaymentID=" + e.Row.Cells[5].Text; //Exception occurs here
hp.Text = "Pay";
e.Row.Cells[4].Visible = true;
break;
}
}
}
我注意到如果你通過像你一樣引用HyperLinkFiled(GridView1.Columns [4])將NavigateUrl和Text分配給超鏈接它沒有分配給當前行,而是分配給下一行,這似乎不是你所期望的。
像這樣重建你的RowDataBound方法:
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
string value = e.Row.Cells[2].Text;
switch (value)
{
case "3":
e.Row.Cells[3].Text = "Waiting Payment";
HyperLink hp = e.Row.Cells[4].Controls[0] as HyperLink;
hp.NavigateUrl = "~/Account/Payments/Payment?PaymentID=" + e.Row.Cells[5].Text;
hp.Text = "Pay";
break;
}
}
}
並從HyperLinkField中刪除visible="false"
,並在網格標記中刪除最后一個BoundField。
您可以從HyperLinkField中刪除Text和NavigateUrl屬性,這樣只有在鏈接正確的情況下才能在單元格中顯示內容。
試一試,看看你是否還有錯誤。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.