本人写一个很简短的程序,却在数据绑定时,老是出下面的错误:
DataGrid 未能从选定数据源自动生成任何列详细出错信息如下:“/WebAppXMLCS”应用程序中的服务器错误。
--------------------------------------------------------------------------------ID 为“MyGrid”的 DataGrid 未能从选定数据源自动生成任何列。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.Web.HttpException: ID 为“MyGrid”的 DataGrid 未能从选定数据源自动生成任何列。源错误:
行 4:
行 5: MyGrid.DataBind();
行 6: 源文件: d:\web_iis\webappxmlcs\webform1.aspx.cs 行: 5
堆栈跟踪,我就不列出来了,一大堆的。源程序如下:
private void Button1_Click(object sender, System.EventArgs e)
{
System.Data.DataSet Ds = new System.Data.DataSet();
Ds.ReadXml(Server.MapPath ("test.xml"));
MyGrid.DataSource = Ds.Tables["测试表"].DefaultView; MyGrid.DataBind();
}事实上,test.xml中是有数据的,用如下语句作测试时,
即可分别显示出行总数和列总数。
//Response.Write(Convert.ToString(Ds.Tables["测试表"].Rows.Count) + "<br>");
//Response.Write(Convert.ToString(Ds.Tables["测试表"].Columns.Count));这问题究竟出在哪里了,我正闷啊
DataGrid 未能从选定数据源自动生成任何列详细出错信息如下:“/WebAppXMLCS”应用程序中的服务器错误。
--------------------------------------------------------------------------------ID 为“MyGrid”的 DataGrid 未能从选定数据源自动生成任何列。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.Web.HttpException: ID 为“MyGrid”的 DataGrid 未能从选定数据源自动生成任何列。源错误:
行 4:
行 5: MyGrid.DataBind();
行 6: 源文件: d:\web_iis\webappxmlcs\webform1.aspx.cs 行: 5
堆栈跟踪,我就不列出来了,一大堆的。源程序如下:
private void Button1_Click(object sender, System.EventArgs e)
{
System.Data.DataSet Ds = new System.Data.DataSet();
Ds.ReadXml(Server.MapPath ("test.xml"));
MyGrid.DataSource = Ds.Tables["测试表"].DefaultView; MyGrid.DataBind();
}事实上,test.xml中是有数据的,用如下语句作测试时,
即可分别显示出行总数和列总数。
//Response.Write(Convert.ToString(Ds.Tables["测试表"].Rows.Count) + "<br>");
//Response.Write(Convert.ToString(Ds.Tables["测试表"].Columns.Count));这问题究竟出在哪里了,我正闷啊
解决方案 »
- Microsoft Visual Studio 正忙(2005) 怎么办?
- c# 数据结构定义问题
- VC操作XML模糊查找问题 。。懂的请给点实例代码 。
- 你真正了解“泛型”与“多态”吗
- delphi 转 c# 那位兄弟能帮我看看
- 我在类库中用Response时出现的错误,好急啊,帮我看一下。。。。。。。
- MCSD 谢谢了:有人考试:MCAD/MCSD 吗。我想知道,怎么报考试,怎么去买教材。
- [求助]请问axWebBrowser控件的NewWindow2事件该怎么使用?
- 字符串的大小比较运算符是什么?
- 怎样得到DataSet里面的一个值
- 关于用Installshiled打包时,加载合并模块的问题,谢谢!
- 在Remoting服务中使用Image打开文件为何总说找不到文件?拜求高手指点
调试时,IE地址栏是:http://localhost/WebAppXMLCS/WebForm1.aspx
出错内容的标题是大红色显示的:“/WebAppXMLCS”应用程序中的服务器错误。上述应用,如果用VB.NET,则不会出此问题,
就是C#中会出这个错误
建议先把表改成英文名 然后给test.xml文件everyone完全读写的权限
试试吧
MyGrid.DataSource = Ds;
MyGrid.DataBind();
再试试
因为,我用英文表名的XML也试过了,
效果是一样的,另外,用如下语句
MyGrid.DataSource = Ds.Tables[0].DefaultView;
也试过,都是出一样的错误。losenetway(firesword)
单步调试,不知怎么调,
如果说是按F11,那么,出错信息是一样的。
如果是设断点,.Net老是不接受。ZC747(马蜂2009)
用MyGrid.DataSource = Ds;
我在前几天发帖之前,试过了,依然是出错,
看完你的回复后,又试了一次,还是不行。
这句什么意思?改成这个试试
MyGrid.DataSource = Ds.Tables[0].DefaultView;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;namespace dddd
{
/// <summary>
/// WebForm1 的摘要说明。
/// </summary>
public class WebForm1 : System.Web.UI.Page
{
protected System.Web.UI.WebControls.DataGrid MyGrid;
protected System.Web.UI.WebControls.Button Button1;
private void Page_Load(object sender, System.EventArgs e)
{ //DemonstrateReadWriteXMLDocumentWithStreamReader();
} #region Web 窗体设计器生成的代码
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}
/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.Button1.Click += new System.EventHandler(this.Button1_Click);
this.Load += new System.EventHandler(this.Page_Load); }
#endregion private void Button1_Click(object sender, System.EventArgs e)
{
System.Data.DataSet Ds = new System.Data.DataSet();
Ds.ReadXml(Server.MapPath ("test.xml"));
MyGrid.DataSource = Ds.Tables["测试表"].DefaultView;
MyGrid.DataBind();
} private void DemonstrateReadWriteXMLDocumentWithStreamReader()
{
// Create a DataSet with one table and two columns.
DataSet OriginalDataSet = new DataSet("myDataSet");
OriginalDataSet.Namespace= "NetFrameWork";
DataTable myTable = new DataTable("测试表");
DataColumn c1 = new DataColumn("id", Type.GetType("System.Int32"));
c1.AutoIncrement= true;
DataColumn c2 = new DataColumn("item");
myTable.Columns.Add(c1);
myTable.Columns.Add(c2);
OriginalDataSet.Tables.Add(myTable);
// Add ten rows.
DataRow newRow;
for(int i = 0; i < 10; i++)
{
newRow = myTable.NewRow();
newRow["item"]= "item " + i;
myTable.Rows.Add(newRow);
}
OriginalDataSet.AcceptChanges();
// Print out values of each table in the DataSet using the
// function defined below.
//PrintValues(OriginalDataSet, "Original DataSet");
// Write the schema and data to XML file with StreamWriter.
string xmlFilename = Server.MapPath ("test.xml");
// Create a new StreamWriter.
System.IO.StreamWriter myStreamWriter =
new System.IO.StreamWriter(xmlFilename);
// Use WriteXml to write the document.
OriginalDataSet.WriteXml(myStreamWriter);
// Close the FileStream.
myStreamWriter.Close();
// Dispose of the original DataSet.
OriginalDataSet.Dispose();
// Create a new DataSet.
DataSet newDataSet = new DataSet("New DataSet");
// Create a StreamReader to read the file.
System.IO.StreamReader myStreamReader =
new System.IO.StreamReader(xmlFilename);
// Read the XML document into the DataSet.
newDataSet.ReadXml(myStreamReader);
// Close the StreamReader.
myStreamReader.Close(); // Print out values of each table in the DataSet using the
// function defined below.
PrintValues(newDataSet,"New DataSet");
} private void PrintValues(DataSet ds, string label)
{
Console.WriteLine("\n" + label);
foreach(DataTable t in ds.Tables)
{
Console.WriteLine("TableName: " + t.TableName);
foreach(DataRow r in t.Rows)
{
foreach(DataColumn c in t.Columns)
{
Console.Write("\t " + r[c] );
}
Console.WriteLine();
}
}
} }
}
然后注释这句 点一下Button
MyGrid.DataBind();modify as MyGrid.DataSource = Ds;
MyGrid.DataMember = Ds.Tables["测试表"];
MyGrid.DataBind();try it!
读完以后,不妨监视一下ds的内容
原因是:
源程序并没有错,因为只有短短的四行,这也出错的话,那还了得.
只是在设计时,刚开始,在DataGrid1的DataSource那里,
设置成了DataSet1,后来在输代码再运行时,就忘记了删除那个属性,
所以导致程序出错,把那一属性去掉后,运行出成功了...由此,我引发另外一个问题,
难道在设计时输入了DataSource的属性值,
注:DataSet1是一个空集.
但我在程序代码中,已经写入了:
MyGrid.DataSource = Ds.Tables["测试表"].DefaultView;
并且Ds是一个有效集,
难道,再进行DataBind时,
这也会出错吗?这样一来,重新设置DataSource,
难道先前在设计窗的DataSource=DataSet1也是生效的???这又使我迷惑了... ...谁能帮我简单描述一下程序运行的简单过程...