private void FillDataGrid()
{
  // 创建新的dataset 包含类别纪录 DataSet dsNorthwind = new DataSet("Employees");  // 从数据库中重新获得纪录,填充 dataset 
  daNorthwind.Fill(dsNorthwind);  //  设置DataGrid的DataSource 属性
  dgNorthwind.DataSource = dsNorthwind.Tables[0].DefaultView;  // 绑定
  dgNorthwind.DataBind();
} private void calHire_SelectionChanged(object sender, System.EventArgs e)
{
  // 如果选错日期会出错,必须选今天以前的日期。
  if (calHire.SelectedDate <= DateTime.Today)
  {
    // 创建dataset 包含新纪录
   DataSet dsTemp = new DataSet();    dsTemp.ReadXml(@"E:\bookcode\asp.net数据库入门\datastores\Employees.xml");    // 插入新行
    DataRow r = dsTemp.Tables[0].NewRow();
    r["LastName"] = "Ferracchiati";
    r["FirstName"] = "Fabio C.";
    r["HireDate"] = Convert.ToDateTime(calHire.SelectedDate);    // 插入一行 dataset的rows集合
    dsTemp.Tables[0].Rows.Add(r);    // 使用临时dataset更新数据集
    daNorthwind.Update(dsTemp, "EMPLOYEE");    // 刷新data grid 现实新纪录
    FillDataGrid();
  }
  else
    Response.Write("Hire date can't be in the future!");
    Response.End();
}

解决方案 »

  1.   

    纪录已经插入,数据库中可以看出来,但是postback后全屏白色,无HTML代码。
    全部代码如下:
    <%@ Import namespace="System.Data" %>
    <%@ Import namespace="System.Data.SqlClient" %><html>
      <head>
        <title>Inserting Calendar and XML Data</title>
      </head>
      <body>
        <form id="Form1" runat="server" method="post">
    <asp:label id="lblRecords" runat="server" />      <table id="Table1"
                 style="Z-INDEX: 101; LEFT: 7px; POSITION: absolute; TOP: 7px"
                 cellSpacing="0" cellPadding="0" width="300" border="0">
            <tr>
              <td style="WIDTH: 681" colSpan="2">
                <asp:DataGrid id="dgNorthwind" runat="server" Width="479"
                        Height="191" BorderColor="#CC9966" BorderWidth="1"
                        BorderStyle="None" BackColor="White" CellPadding="4"
                        DataKeyField="EmployeeID" AutoGenerateColumns="False" >              <SelectedItemStyle Font-Bold="True" ForeColor="#663399" BackColor="#FFCC66" />
                  <ItemStyle ForeColor="#330099" BackColor="White" />
                  <HeaderStyle Font-Bold="True"   ForeColor="#FFFFCC" BackColor="#990000" />
                  <FooterStyle ForeColor="#330099" BackColor="#FFFFCC" /> <Columns>
    <asp:BoundColumn DataField="FirstName" HeaderText="First Name" />
    <asp:BoundColumn DataField="LastName" HeaderText="Last Name" />
    <asp:BoundColumn DataField="HireDate" HeaderText="Hire Date" />
    </Columns>               <PagerStyle HorizontalAlign="Center"  ForeColor="#330099" BackColor="#FFFFCC" />
                </asp:DataGrid>
              </td>
            </tr>
            <tr>
              <td style="WIDTH: 681; HEIGHT: 49" colSpan="2">
                <asp:Label id="Label1" runat="server" Height="45" Width="480"
                           BackColor="Maroon" Font-Bold="True" ForeColor="#FFE0C0">
                  选择日历插入数据            </asp:Label>
              </td>
            </tr>
            <tr>
              <td style="WIDTH: 681" colSpan="2">
                <asp:Calendar id="calHire" runat="server"
                      OnSelectionChanged="calHire_SelectionChanged"
                      BorderColor="#FFCC66" Height="153" Width="479"
                      BackColor="#FFFFCC" BorderWidth="1" ForeColor="#663399"
                      EnableViewState="False" ShowGridLines="True"
                      Font-Names="Verdana" Font-Size="8pt">
                  <TodayDayStyle ForeColor="White" BackColor="#FFCC66" />
                  <SelectorStyle BackColor="#FFCC66" />
                  <NextPrevStyle Font-Size="9pt" ForeColor="#FFFFCC" />
                  <DayHeaderStyle Height="1" BackColor="#FFCC66" />
                  <SelectedDayStyle Font-Bold="True" BackColor="#CCCCFF" />
                  <TitleStyle Font-Size="9pt" Font-Bold="True" 
                              ForeColor="#FFFFCC" BackColor="#990000" />
                  <OtherMonthDayStyle ForeColor="#CC9966" />
                </asp:Calendar>
              </td>
            </tr>
            <tr>
              <td style="WIDTH: 681" colSpan="2">
                <asp:Label id="lbError" runat="server" ForeColor="Red" />
              </td>
            </tr>
          </table>
        </form>
      </body>
    </html><script language="c#" runat="server">
    SqlConnection objConnection;
    SqlDataAdapter daNorthwind;
    DataSet dsNorthwind;
     
    private void Page_Load(object sender, System.EventArgs e)
    {
      String strConnection = ConfigurationSettings.AppSettings["NWind"];
      SqlConnection objConnection = new SqlConnection(strConnection);  String strSQL = "SELECT EmployeeID, LastName, FirstName, HireDate FROM Employees";
      daNorthwind = new SqlDataAdapter(strSQL, objConnection);  SqlCommandBuilder cb = new SqlCommandBuilder(daNorthwind);   if (!Page.IsPostBack)
       {
        FillDataGrid();
       }

    private void FillDataGrid()
    {
      // 创建新的dataset 包含类别纪录 DataSet dsNorthwind = new DataSet("Employees");  // 从数据库中重新获得纪录,填充 dataset 
      daNorthwind.Fill(dsNorthwind);  //  设置DataGrid的DataSource 属性
      dgNorthwind.DataSource = dsNorthwind.Tables[0].DefaultView;  // 绑定
      dgNorthwind.DataBind();
    } private void calHire_SelectionChanged(object sender, System.EventArgs e)
    {
      // 如果选错日期会出错,必须选今天以前的日期。
      if (calHire.SelectedDate <= DateTime.Today)
      {
        // 创建dataset 包含新纪录
       DataSet dsTemp = new DataSet();    dsTemp.ReadXml(@"E:\bookcode\asp.net数据库入门\datastores\Employees.xml");    // 插入新行
        DataRow r = dsTemp.Tables[0].NewRow();
        r["LastName"] = "Ferracchiati";
        r["FirstName"] = "Fabio C.";
        r["HireDate"] = Convert.ToDateTime(calHire.SelectedDate);    // 插入一行 dataset的rows集合
        dsTemp.Tables[0].Rows.Add(r);    // 使用临时dataset更新数据集
        daNorthwind.Update(dsTemp, "EMPLOYEE");    // 刷新data grid 现实新纪录
        FillDataGrid();
      }
      else
        Response.Write("Hire date can't be in the future!");
        Response.End();
    }
    </script>
      

  2.   

    相同的VB代码就没问题
    <%@ Import namespace="System.Data" %>
    <%@ Import namespace="System.Data.SqlClient" %><html>
      <head>
        <title>Inserting Calendar and XML Data</title>
      </head>
      <body>
        <form id="Form1" runat="server" method="post">
          <table id="Table1"
                 style="Z-INDEX: 101; LEFT: 7px; POSITION: absolute; TOP: 7px"
                 cellSpacing="0" cellPadding="0" width="300" border="0">
            <tr>
              <td style="WIDTH: 681" colSpan="2">
                <asp:DataGrid id="dgNorthwind" runat="server" Width="479"
                        Height="191" BorderColor="#CC9966" BorderWidth="1"
                        BorderStyle="None" BackColor="White" CellPadding="4"
                        DataKeyField="EmployeeID" AutoGenerateColumns="False">             <SelectedItemStyle Font-Bold="True"
    ForeColor="#663399" BackColor="#FFCC66" />
                  <ItemStyle ForeColor="#330099" BackColor="White" />
                  <HeaderStyle Font-Bold="True"
                               ForeColor="#FFFFCC" BackColor="#990000" />
                  <FooterStyle ForeColor="#330099" BackColor="#FFFFCC" />
                  <Columns>
                   <asp:BoundColumn DataField="FirstName" HeaderText="First Name" />
                   <asp:BoundColumn DataField="LastName" HeaderText="Last Name" />
                   <asp:BoundColumn DataField="HireDate" HeaderText="Hire Date" />
                  </Columns>
                  <PagerStyle HorizontalAlign="Center"
                              ForeColor="#330099" BackColor="#FFFFCC" />
                </asp:DataGrid>
              </td>
            </tr>
            <tr>
              <td style="WIDTH: 681; HEIGHT: 49" colSpan="2">
                <asp:Label id="Label1" runat="server" Height="45" Width="480"
                           BackColor="Maroon" Font-Bold="True" ForeColor="#FFE0C0">
                  By selecting a date from the calendar, you
                  will insert a new record in the database.
                </asp:Label>
              </td>
            </tr>
            <tr>
              <td style="WIDTH: 681" colSpan="2">
                <asp:Calendar id="calHire" runat="server"
                      OnSelectionChanged="calHire_SelectionChanged"
                      BorderColor="#FFCC66" Height="153" Width="479"
                      BackColor="#FFFFCC" BorderWidth="1" ForeColor="#663399"
                      EnableViewState="False" ShowGridLines="True"
                      Font-Names="Verdana" Font-Size="8pt">
                  <TodayDayStyle ForeColor="White" BackColor="#FFCC66" />
                  <SelectorStyle BackColor="#FFCC66" />
                  <NextPrevStyle Font-Size="9pt" ForeColor="#FFFFCC" />
                  <DayHeaderStyle Height="1" BackColor="#FFCC66" />
                  <SelectedDayStyle Font-Bold="True" BackColor="#CCCCFF" />
                  <TitleStyle Font-Size="9pt" Font-Bold="True" 
                              ForeColor="#FFFFCC" BackColor="#990000" />
                  <OtherMonthDayStyle ForeColor="#CC9966" />
                </asp:Calendar>
              </td>
            </tr>
            <tr>
              <td style="WIDTH: 681" colSpan="2">
                <asp:Label id="lbError" runat="server" ForeColor="Red" />
              </td>
            </tr>
          </table>
        </form>
      </body>
    </html><script language="VB" runat="server">
    Dim objConnection As SqlConnection
    Dim daNorthwind As SqlDataAdapter
    Dim dsNorthwind As DataSetSub Page_Load(Source As Object, E As EventArgs)  Dim strConnection As String = ConfigurationSettings.AppSettings("NWind")
      objConnection = New SqlConnection(strConnection)  Dim strSQL As String = "SELECT EmployeeID, LastName, FirstName, HireDate " & _
                             "FROM Employees"
      daNorthwind = New SqlDataAdapter(strSQL, objConnection)  Dim cb As New SqlCommandBuilder(daNorthwind)  If Not Page.IsPostBack Then
        FillDataGrid()
      End If
    End SubSub FillDataGrid()  ' Create a new dataset to contain categories' records
      dsNorthwind = New DataSet()  ' Fill the dataset retrieving data from the database
      daNorthwind.Fill(dsNorthwind)  ' Set the DataSource property of the DataGrid
      dgNorthwind.DataSource = dsNorthwind.Tables(0).DefaultView  ' Bind the dataset data to the DataGrid
      dgNorthwind.DataBind()
    End SubSub calHire_SelectionChanged(Source As Object, E As EventArgs)  ' If the user chooses a date in the future, an error message is displayed
      If calHire.SelectedDate <= Today() Then    ' Create a temporary dataset to contain the new record
        Dim dsTemp As New DataSet()    dsTemp.ReadXml("E:\bookcode\asp.net数据库入门\datastores\Employees.xml")    ' Create a new row
        Dim r As DataRow = dsTemp.Tables(0).NewRow()
        r("LastName") = "Ferracchiati"
        r("FirstName") = "Fabio C."
        r("HireDate") = Convert.ToDateTime(calHire.SelectedDate)    ' Add the new row into the dataset's rows collection
        dsTemp.Tables(0).Rows.Add(r)    ' Update the database using the temporary dataset
        daNorthwind.Update(dsTemp, "EMPLOYEE")    ' Refresh the data grid to display the new record
        FillDataGrid()
      Else
        Response.Write("Hire date can't be in the future!")
        Response.End()
      End If
    End Sub
    </script>
      

  3.   

    if()
    {}
    else
    {
    Response.Write(...);
    Response.End();
    }
    if...else...是要有大括号的