<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.SqlClient" %>
<%@ Import Namespace="System.Globalization" %>
<%@ Import Namespace="Acme" %><html><script language="C#" runat="server">    SqlConnection myConnection;    protected void Page_Load(Object Src, EventArgs E)
    {
        myConnection = new SqlConnection("server=(local)\\NetSDK;database=pubs;Integrated Security=SSPI");        if (!IsPostBack)
            BindGrid();
    }    public void MyDataGrid_Edit(Object sender, DataGridCommandEventArgs e)
    {
        MyDataGrid.EditItemIndex = (int)e.Item.ItemIndex;
        BindGrid();
    }    public void MyDataGrid_Cancel(Object sender, DataGridCommandEventArgs e)
    {
        MyDataGrid.EditItemIndex = -1;
        BindGrid();
    }    public void MyDataGrid_Update(Object sender, DataGridCommandEventArgs e)
    {
        String updateCmd = "UPDATE Authors SET au_id = @Id, au_lname = @LName, au_fname = @FName, phone = @Phone, "
             + "address = @Address, city = @City, state = @State, zip = @Zip, contract = @Contract where au_id = @Id";        SqlCommand myCommand = new SqlCommand(updateCmd, myConnection);        myCommand.Parameters.Add(new SqlParameter("@Id", SqlDbType.NVarChar, 11));
        myCommand.Parameters.Add(new SqlParameter("@LName", SqlDbType.NVarChar, 40));
        myCommand.Parameters.Add(new SqlParameter("@FName", SqlDbType.NVarChar, 20));
        myCommand.Parameters.Add(new SqlParameter("@Phone", SqlDbType.NChar, 12));
        myCommand.Parameters.Add(new SqlParameter("@Address", SqlDbType.NVarChar, 40));
        myCommand.Parameters.Add(new SqlParameter("@City", SqlDbType.NVarChar, 20));
        myCommand.Parameters.Add(new SqlParameter("@State", SqlDbType.NChar, 2));
        myCommand.Parameters.Add(new SqlParameter("@Zip", SqlDbType.NChar, 5));
        myCommand.Parameters.Add(new SqlParameter("@Contract", SqlDbType.NVarChar,1));        myCommand.Parameters["@Id"].Value = MyDataGrid.DataKeys[(int)e.Item.ItemIndex];        String[] cols = {"@Id","@LName","@FName","@Phone","@Address","@City","@State","@Zip","@Contract"};
        Message.InnerHtml = "";        int numCols = e.Item.Cells.Count;
        for (int i=2; i<numCols-1; i++) //skip first, second and last column
        {
            String colvalue =((System.Web.UI.WebControls.TextBox)
                e.Item.Cells[i].Controls[0]).Text;
                
            // check for invalid values
            switch (cols[i-1])
            {
                case "@LName":
                    if ( !InputValidator.IsValidAnsiName(colvalue) )
                    {
                        Message.InnerHtml += "ERROR: Last Name - " + InputValidator.AnsiNameErrorString + "<br>";
                    }
                    break;
                case "@FName":
                    if ( !InputValidator.IsValidAnsiName(colvalue) )
                    {
                        Message.InnerHtml += "ERROR: First Name - " + InputValidator.AnsiNameErrorString + "<br>";
                    }
                    break;
                case "@Phone":
                    if ( !InputValidator.IsValidAnsiPhoneNumber(colvalue) )
                    {
                        Message.InnerHtml += "ERROR: Phone - " + InputValidator.AnsiPhoneErrorString + "<br>";
                    }
                    break;
                case "@Address":
                    if ( !InputValidator.IsValidAnsiAddress(colvalue) )
                    {
                        Message.InnerHtml += "ERROR: Address - " + InputValidator.AnsiAddressErrorString + "<br>";
                    }
                    break;
                case "@City":
                    if ( !InputValidator.IsValidAnsiCityOrState(colvalue) )
                    {
                        Message.InnerHtml += "ERROR: City - " + InputValidator.AnsiCityStateErrorString + "<br>";
                    }
                    break;
                case "@State":
                    if ( !InputValidator.IsValidAnsiTwoCharacterState(colvalue) )
                    {
                        Message.InnerHtml += "ERROR: State - " + InputValidator.AnsiTwoCharacterStateErrorString + "<br>";
                    }
                    break;
                case "@Zip":
                    if ( !InputValidator.IsValidFiveDigitZipCode(colvalue) )
                    {
                        Message.InnerHtml += "ERROR: Zip Code - " + InputValidator.AnsiBasicZipCodeErrorString + "<br>";
                    }
                    break;
            }            // check for null values in required fields
            if (i<6 && colvalue == "")
            {
                Message.InnerHtml += "ERROR: Null values not allowed for " + cols[i-1] + "<br>";
            }            myCommand.Parameters[cols[i-1]].Value = colvalue;
        }
        
        if ( Message.InnerHtml != "" )
        {
            Message.Style["color"] = "red";
            return;
        }        //append last row, converting true/false values to 0/1
        if (String.Compare(((System.Web.UI.WebControls.TextBox)
            e.Item.Cells[numCols-1].Controls[0]).Text, "true", true, CultureInfo.InvariantCulture)==0)
            myCommand.Parameters["@Contract"].Value =  "1";
        else
            myCommand.Parameters["@Contract"].Value =  "0";        myCommand.Connection.Open();        try
        {
            myCommand.ExecuteNonQuery();
            Message.InnerHtml = "<b>Record Updated</b><br>" + updateCmd;
            MyDataGrid.EditItemIndex = -1;
        }
        catch (SqlException exc)
        {
            if (exc.Number == 2627)
                Message.InnerHtml = "ERROR: A record already exists with the same primary key";
            else
                Message.InnerHtml = "ERROR: Could not update record, please ensure the fields are correctly filled out";
            Message.Style["color"] = "red";
        }        myCommand.Connection.Close();        BindGrid();
    }    public void BindGrid()
    {
        SqlDataAdapter myCommand = new SqlDataAdapter("select * from Authors", myConnection);        DataSet ds = new DataSet();
        myCommand.Fill(ds, "Authors");        MyDataGrid.DataSource=ds.Tables["Authors"].DefaultView;
        MyDataGrid.DataBind();
    }</script><body style="font: 10pt verdana">  <form runat="server">    <h3><font face="Verdana">Updating a Row of Data</font></h3>    <span id="Message" EnableViewState="false" style="font: arial 11pt;" runat="server"/><p>    <ASP:DataGrid id="MyDataGrid" runat="server"
      Width="800"
      BackColor="#ccccff"
      BorderColor="black"
      ShowFooter="false"
      CellPadding=3
      CellSpacing="0"
      Font-Name="Verdana"
      Font-Size="8pt"
      HeaderStyle-BackColor="#aaaadd"
      OnEditCommand="MyDataGrid_Edit"
      OnCancelCommand="MyDataGrid_Cancel"
      OnUpdateCommand="MyDataGrid_Update"
      DataKeyField="au_id"
    >      <Columns>
        <asp:EditCommandColumn EditText="Edit" CancelText="Cancel" UpdateText="Update" ItemStyle-Wrap="false"/>
      </Columns>    </ASP:DataGrid>  </form></body>
</html>

解决方案 »

  1.   

    程序员转行啊,不容易,一楼wangsaokui(无间道II(前传))的程序很不错
    建议你先看看ADO.Net的书,内容不多的
      

  2.   

    公司老总说缺书买啊。就不加一句买回来报。
    一楼的程序不怎么看的懂。里面的语句倒是没问题。。
    关键的是那些控件怎么设置?一楼那一大段程序是覆盖页面HTML吗?
      

  3.   

    编译结果:
    服务器应用程序不可用 
    您试图在此 Web 服务器上访问的 Web 应用程序当前不可用。请点击 Web 浏览器中的“刷新”按钮重试您的请求。 管理员注意事项: 详述此特定请求失败原因的错误信息可在 Web 服务器的系统事件日志中找到。请检查此日志项以查明导致该错误发生的原因。 aspnet_wp.exe  (PID: 1436) was recycled because memory consumption exceeded the 75 MB (60 percent of available RAM).  是不是内存少了?