【发布时间】:2010-05-28 10:32:53
【问题描述】:
我创建了一个返回数据表的类,当我在 c# winform 中使用该类时,使用以下代码正确填充了 dataGridView
DataTable dt = dbLib.GetData();
if (dt != null)
{
dataGridView1.DataSource = dbLib.GetData();
}
然而,当我用 ASP.NET 尝试同样的事情时,我得到了一个
对象引用未设置为对象的实例。
使用以下代码
DataTable dt = dbLib.GetData();
if (dt != null)
{
GridView1.DataSource = dt;
GridView1.DataBind();
}
dbLib 类 GetData2 是为了证明它不是由 SQlite 或数据引起的
public static DataTable GetData()
{
SQLiteConnection cnn = new SQLiteConnection("Data Source=c:\\test.db");
SQLiteCommand cmd = new SQLiteCommand("SELECT count(Message) AS Occurrences, Message FROM evtlog GROUP BY Message ORDER BY Occurrences DESC LIMIT 25", cnn);
cnn.Open();
SQLiteDataReader dr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
DataTable dt = new DataTable();
dt.Load(dr);
return dt;
}
public static DataTable GetData2()
{
DataTable dt = new DataTable();
dt.Columns.Add(new DataColumn("Occurrences", typeof(string)));
dt.Columns.Add(new DataColumn("Message", typeof(string)));
DataRow dataRow = dt.NewRow();
dataRow["Occurrences"] = "1";
dataRow["Message"] = "a";
dt.Rows.Add(dataRow);
return dt;
}
asp 代码
<asp:GridView ID="GridView1" runat="server">
<Columns>
<asp:BoundField DataField="Occurrences" HeaderText="Occurrences"></asp:BoundField>
<asp:BoundField DataField="Message" HeaderText="Message"></asp:BoundField>
</Columns>
</asp:GridView>
【问题讨论】:
-
@charles 你能发帖
GetData()方法吗.. -
您是否在 gridview 的标记上正确声明了 BoundFields? programming.top54u.com/post/…
-
@mamoo 我是 ASP.NET 的新手,你能扩展你所说的吗?谢谢
-
@charles:您的标记(您的 asp.net 页面)中应该有一个或多个
标签内的 标签。此标签(在您的情况下)指的是您的 DataTable 列。也许有什么问题......你能发布你的 asp.net 标记吗? -
你在哪里运行这段代码?在 asp.net 生命周期的哪个阶段?
标签: c# asp.net sqlite gridview datatable