我正在尝试将GridView绑定到DataSet,但它会引发Stack溢出错误。当我调试它时,它运行到DataBind线就好了(看起来它从服务器和所有内容获得了正确的记录),但是在执行DataBind之后,它跳转到方法的顶部并重新运行整个方法,导致堆栈溢出。
我无法理解为什么这不起作用。我以前做过与DataTable非常相似的事情,它运行良好。
以下是我绑定的方式
public void CreateGrid(String str)
{
try
{
sqlConnection = new SqlConnection();
sqlConnection.ConnectionString = ConfigurationManager.ConnectionStrings["MY_CONNECTION_STRING"].ConnectionString;
sqlConnection.Open();
DataSet dt = new DataSet();
SqlDataAdapter adapter = new SqlDataAdapter(str, sqlConnection);
adapter.Fill(dt);
sqlConnection.Close();
}
catch (Exception ex)
{
Console.WriteLine(ex.GetType().Name + ":" + ex.Message);
}
if (dt.Tables.Count > 0)
{
Grid.DataSource = dt;
Grid.DataBind();
}
}
这是我的HTML部分
<asp:GridView runat="server" ID="Grid" AutoGenerateColumns="false"
OnDataBinding="RebindGrid" AllowPaging="True" PageSize="10" AllowSorting="True" CellPadding="5"
OnPageIndexChanging="Grid_PageIndexChanging"
OnSorting="Grid_Sorting"
Width="100%" CssClass="mGrid">
<Columns>
<asp:BoundField DataField="ID" ItemStyle-Width="0%"
HeaderText="" Visible="false" SortExpression="ID"/>
</Columns>
</asp:GridView>
答案 0 :(得分:2)
这看起来像一个问题
OnDataBinding="RebindGrid"
每次绑定数据时,都会重新绑定。我们必须看到RebindGrid的代码。
答案 1 :(得分:0)
这取决于RebindGrid
方法实际执行的操作,但看起来您将网格重新绑定为绑定它。
删除OnDataBinding="RebindGrid"
。