设断点在newRow=dataSet.Tables[0].NewRow();,查一查dataset是不是为null值

解决方案 »

  1.   

    我把全部代码放在这里,谁能够帮我运行一下,看看到底有什么问题行吗?谢谢各位
    /////////////////////////////////////////////////////////////////
    1.EditAsp.aspx
    /////////////////////////////////////////////////////////////////<%@ Import Namespace="System.Data"%>
    <%@ Import Namespace="System.IO"%>
    <%@ Import Namespace="System.Globalization"%>
    <%@ Page Language="C#" Debug="true" %><script Language="c#" runat="server">
        void Page_Load(object sender,EventArgs e)
    {
      if(!(Page.IsPostBack))
      {
          EventData.DataSource=LoadMyCalendarData();
      EventData.DataBind();
      }
     }
     
     protected DataSet LoadMyCalendarData()
     {
     string sourceXml=Server.MapPath("Calendar.xml");
     if(!(File.Exists(sourceXml)))
     {
         return null;
     }
     DataSet cachedDataSet=(DataSet)Session["MyCalendarData"];
     if(!(cachedDataSet==null))
     {
     return cachedDataSet;
     }
     DataSet dataSet=new DataSet();
     try
     {
     dataSet.ReadXml(sourceXml);
     Session["MyCalendarData"]=dataSet;
     }
     catch(Exception e)
     {
     ErrorMessage.Text=e.Message;
     dataSet=null;
     }
     return dataSet;
     }
     
     void DEDR_Edit(object sender,DataGridCommandEventArgs e)
     {
     EventData.EditItemIndex=Convert.ToInt32(e.Item.ItemIndex);
     EventData.DataSource=LoadMyCalendarData();
     EventData.DataBind();
     }
     
     void DEDR_Update(object sender,DataGridCommandEventArgs e)
     {
     DataSet dataSet=LoadMyCalendarData();
     int row=Convert.ToInt32(e.Item.ItemIndex);
     TextBox EditText=null;
     EditText=(TextBox)e.Item.FindControl("txtShortDesc");
     dataSet.Tables[0].Rows[row]["ShortDesc"]=EditText.Text;
     EditText=(TextBox)e.Item.FindControl("txtDetailDesc");
     dataSet.Tables[0].Rows[row]["DetailDesc"]=EditText.Text;
     EditText=(TextBox)e.Item.FindControl("txtEventDate");
     dataSet.Tables[0].Rows[row]["EventDate"]=EditText.Text;
     EditText=(TextBox)e.Item.FindControl("txtStartTime");
     dataSet.Tables[0].Rows[row]["StartTime"]=EditText.Text;
     EditText=(TextBox)e.Item.FindControl("txtEndTime");
     dataSet.Tables[0].Rows[row]["EndTime"]=EditText.Text;
     dataSet.WriteXml(Server.MapPath("Calendar.xml"));
     Session["MyCalendarData"]=null;
     EventData.EditItemIndex=-1;
     EventData.DataSource=LoadMyCalendarData();
     EventData.DataBind();
     }
     
     void DEDR_Cancel(object sender,DataGridCommandEventArgs e)
     {
     EventData.EditItemIndex=-1;
     Session["MyCalendarData"]=null;
     EventData.DataSource=LoadMyCalendarData();
     EventData.DataBind();
     }
     
     void DEDR_Delete(object sender,DataGridCommandEventArgs e)  
     {
     DataSet dataSet=LoadMyCalendarData();
     int row=Convert.ToInt32(e.Item.ItemIndex);
     dataSet.Tables[0].Rows[row].Delete();
     dataSet.WriteXml(Server.MapPath("Calendar.xml"));
     Session["MyCalendarData"]=null;
     EventData.EditItemIndex=-1;
     EventData.DataSource=LoadMyCalendarData();
     EventData.DataBind();
     }
     
     void DEDR_Add(object sender,EventArgs a)
     {
     DataSet dataSet=LoadMyCalendarData();
     DataRow newRow;
     newRow=dataSet.Tables[0].NewRow();
     newRow["ShortDesc"]="";
     newRow["DetailDesc"]="";
     newRow["EventDate"]="";
     newRow["StartTime"]="";
     newRow["EndTime"]="";
     dataSet.Tables[0].Rows.Add(newRow);
     dataSet.WriteXml(Server.MapPath("Calendar.xml"));
     Session["MyCalendarData"]=null;
     EventData.DataSource=LoadMyCalendarData();
     EventData.DataBind();
     EventData.EditItemIndex=EventData.Items.Count-1;
     EventData.DataSource=LoadMyCalendarData();
     EventData.DataBind();
     }
    </script><html>
        <head>
        <title>EditItem</title></head>
        <body>
            <form runat="server">
                <asp:Label id="ErrorMessage" runat="server"/><br/>
    <asp:LinkButton OnClick="DEDR_Add" Text="Add new event" runat="server"/><br/>
    <asp:DataGrid ID="EventData" AutoGenerateColumns="false" Width="100%" runat="server"
    OnEditCommand="DEDR_Edit"
    OnUpdateCommand="DEDR_Update"
    OnCancelCommand="DEDR_Cancel"
    OnDeleteCommand="DEDR_Delete"></asp:DataGrid>
    <headerstyle ForeColor="#FFFFFF" BackColor="#1E90FF" Font-Bold="true"></headerstyle>
    <itemstyle BackColor="#FFFFFF"></itemstyle>
    <alternatingitemstyle BackColor="#DCDCDC"/>

    <columns>
    <asp:TemplateColumn HeaderText="Date" runat="server">
    <Itemtemplate>
                    <%# DataBinder.Eval(Container.DataItem, "EventDate") %> </Itemtemplate>
    <edititemtemplate>
    <asp:TextBox ID="txtEventDate" Size="25";
       Text='<%#DataBinder.Eval(Container.DataItem,"EventDate")%>' runat="server"/>
    </edititemtemplate>
    </asp:TemplateColumn>

    <asp:TemplateColumn HeaderText="Event" runat="server">
    <ItemTemplate>
        <%#DataBinder.Eval(Container.DataItem,"ShortDesc")%>
    </ItemTemplate>
    <edititemtemplate>
                  <asp:TextBox ID="txtShortDesc" size="25";
       Text='<%#DataBinder.Eval(Container.DataItem,"ShortDesc")%>' runat="server"/>              
    </edititemtemplate>
    </asp:TemplateColumn>

    <asp:TemplateColumn HeaderText="Description" runat="server">
    <itemtemplate>
        <%#DataBinder.Eval(Container.DataItem,"DetailDesc")%>
    </itemtemplate>
    <edititemtemplate>
    <asp:TextBox ID="txtDetailDesc" Size="50"
       Text='<%#DataBinder.Eval(Container.DataItem,"DetailDesc")%>' runat="server"/>
    </edititemtemplate>
    </asp:TemplateColumn>

    <asp:TemplateColumn HeaderText="Start Time" runat="server">
    <itemtemplate>
        <%#DataBinder.Eval(Container.DataItem,"StartTime")%>
    </itemtemplate>
    <edititemtemplate>
    <asp:TextBox ID="txtStartTime" Size="7"
       Text='<%#DataBinder.Eval(Container.DataItem,"StartTime")%>' runat="server"/>
    </edititemtemplate>
    </asp:TemplateColumn>

    <asp:TemplateColumn HeaderText="End Time" runat="server">
    <itemtemplate>
        <%#DataBinder.Eval(Container.DataItem,"EndTime")%>
    </itemtemplate>
    <edititemtemplate>
    <asp:TextBox ID="txtEndTime" Size="50"
       Text='<%#DataBinder.Eval(Container.DataItem,"EndTime")%>' runat="server"/>
    </edititemtemplate>
    </asp:TemplateColumn>

    <asp:TemplateColumn>
    <itemtemplate>
    <asp:LinkButton CommandName="Edit" Text="Edit" runat="server"/>
    <asp:LinkButton CommandName="Delete" Text="Delete" runat="server"/>
    </itemtemplate>
    <edititemtemplate>
    <asp:LinkButton CommandName="Cancel" Text="Cancel" runat="server"/>
    <asp:LinkButton CommandName="Update" Text="Update" runat="server"/>
    </edititemtemplate>
    </asp:TemplateColumn>
    </columns>
    </asp:DataGrid>
                </form>
        </body>
    </html>
    ///////////////////////////////////////////////////////////////
    2.Calendar.xml
    ///////////////////////////////////////////////////////////////
    <?xml version="1.0" encoding="utf-8" ?><MyCalendar>
       <Event>
        <ShortDesc>Concert at the Riverfront</ShortDesc>
        <DetailDesc>3th of the Celebration.Bring stand and a jacket</DetailDesc>
        <EventDate>2004/3/31</EventDate>
        <StartTime>9:30am</StartTime>
        <EndTime>12:30am</EndTime>
       </Event>
       <Event>
        <shortDesc>CCTV 12 Start Conference</shortDesc>
        <DetailDesc>CCTV 12 at the Beginning of time,take you pill</DetailDesc>
        <EventDate>2004/4/8</EventDate>
        <StartTime>8:00pm</StartTime>
        <EndTime>11:00pm</EndTime>
       </Event>
    <MyCalendar>
    //////////////////////////////////////////////////////////////////////
    以上为全部代码,谢谢各位帮我看看