前台
<asp:GridView ID="grshow" runat="server"> </asp:GridView>
后台
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.IO; using System.Web.UI.HtmlControls; using System.Data; namespace trafficApplication1.manage { public partial class shanwenjian : System.Web.UI.Page { DataTable dt; DataRow dr; protected void Page_Load(object sender, EventArgs e) { getwenjian(); } public DataTable creatdt() { dt = new DataTable(); dt.Columns.Add("name", typeof(string)); return dt; } public void getwenjian() { grshow.DataSource = creatdt(); int i=0; string str = Server.MapPath("~/manage/upload/"); DirectoryInfo dir = new DirectoryInfo(str); DirectoryInfo[] dirr = dir.GetDirectories(); foreach (DirectoryInfo di in dirr) { dr[i] =di.Name; dt.Rows.Add(dr);
i++; } } } }
错误
“/”应用程序中的服务器错误。 未将对象引用设置到对象的实例。 说明: 执行当前 Web 请求期间,出现未经处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.NullReferenceException: 未将对象引用设置到对象的实例。 源错误: 行 44: dr[0] =di.Name; 行 45: dt.Rows.Add(dr); 行 46: } 源文件: C:\Documents and Settings\Administrator\桌面\交通质监平台\trafficApplication1\trafficApplication1\manage\shanwenjian.aspx.cs 行: 44
creatdt();这个为null,赋值给
grshow.DataSource 会报错的。你调试一下就知道了原因了。
为null的话 只是没有绑定上数据而已 不会报错的
为null的话 只是没有绑定上数据而已 不会报错的
dt.Rows.Add(dr[i]); 是不是该有个i
程序还没走到那就已经报错了
@小 莫: 我都菜鸟二级了 真不知道那错了 知道了告诉我
@殷中兴: 这个和是什么等级有什么关系??
dr未初始换,并且在foreach中每次都该初始化
foreach (DirectoryInfo di in dirr) { dr=dt.NewRow();
dr[0] =di.Name; dt.Rows.Add(dr);
}
我不知道怎么形容这种造成这种bug的原因。能力?细心?技能?智力?
好好买本入门书,好好看了再动手吧。
当你遇到一个新问题 自己尝试解决而没有解决的时候 请问这是什么原因造就了你
楼上把我想说的 都说了