本人写一个很简短的程序,却在数据绑定时,老是出下面的错误:
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));这问题究竟出在哪里了,我正闷啊

解决方案 »

  1.   

    忘记了加一句,上述语句,是建立在一个 WebApplication 中
      

  2.   

    在IIS中建立了虚拟目录
    调试时,IE地址栏是:http://localhost/WebAppXMLCS/WebForm1.aspx
    出错内容的标题是大红色显示的:“/WebAppXMLCS”应用程序中的服务器错误。上述应用,如果用VB.NET,则不会出此问题,
    就是C#中会出这个错误
      

  3.   

    在Web里读XML  没搞过
    建议先把表改成英文名  然后给test.xml文件everyone完全读写的权限
    试试吧
      

  4.   

    改为
    MyGrid.DataSource = Ds;
    MyGrid.DataBind();
    再试试
      

  5.   

    gaochundu(高纯度)跟表名是否为中文或英文,是无关的,
    因为,我用英文表名的XML也试过了,
    效果是一样的,另外,用如下语句
    MyGrid.DataSource = Ds.Tables[0].DefaultView;
    也试过,都是出一样的错误。losenetway(firesword)
    单步调试,不知怎么调,
    如果说是按F11,那么,出错信息是一样的。
    如果是设断点,.Net老是不接受。ZC747(马蜂2009)
    用MyGrid.DataSource = Ds;
    我在前几天发帖之前,试过了,依然是出错,
    看完你的回复后,又试了一次,还是不行。
      

  6.   

    MyGrid.DataSource = Ds.Tables["测试表"].DefaultView;
    这句什么意思?改成这个试试
    MyGrid.DataSource = Ds.Tables[0].DefaultView;
      

  7.   

    using System;
    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();
    }
    }
    } }
    }
      

  8.   

    首先执行一下//DemonstrateReadWriteXMLDocumentWithStreamReader(); 创建文件,
    然后注释这句 点一下Button
      

  9.   

    MyGrid.DataSource = Ds.Tables["测试表"].DefaultView;
    MyGrid.DataBind();modify as MyGrid.DataSource = Ds;
    MyGrid.DataMember = Ds.Tables["测试表"];
    MyGrid.DataBind();try it!
      

  10.   

    估计是读XML的时候出的问题
    读完以后,不妨监视一下ds的内容
      

  11.   

    谢谢各位的参与,问题解决了...
    原因是:
    源程序并没有错,因为只有短短的四行,这也出错的话,那还了得.
    只是在设计时,刚开始,在DataGrid1的DataSource那里,
    设置成了DataSet1,后来在输代码再运行时,就忘记了删除那个属性,
    所以导致程序出错,把那一属性去掉后,运行出成功了...由此,我引发另外一个问题,
    难道在设计时输入了DataSource的属性值,
    注:DataSet1是一个空集.
    但我在程序代码中,已经写入了:
    MyGrid.DataSource = Ds.Tables["测试表"].DefaultView;
    并且Ds是一个有效集,
    难道,再进行DataBind时,
    这也会出错吗?这样一来,重新设置DataSource,
    难道先前在设计窗的DataSource=DataSet1也是生效的???这又使我迷惑了...  ...谁能帮我简单描述一下程序运行的简单过程...