⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 updatingdata.aspx

📁 这是《ASP.NET编程实作教程》一书中的源文件 如果有此书的朋友不防下载过来参考
💻 ASPX
字号:
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.SqlClient" %>
<html>
<script language="C#" runat="server"> 
 
    SqlConnection myConnection;

    protected void Page_Load(Object sender, EventArgs e) 
    {      
        //建立数据连接
        myConnection = new SqlConnection("server=(local);database=Northwind;Trusted_Connection=yes");           
        if (!IsPostBack) {
            BindGrid();
        }
    }

    public void BindGrid() {  
            //创建SqlDataAdapter对象
            SqlDataAdapter MC = new SqlDataAdapter("select * from Shippers",myConnection);
            //创建DataSet对象
            DataSet ds = new DataSet();
            //将查询结果填充到DataSet对象中
            MC.Fill(ds, "Shippers");
            MyDataGrid.DataSource=ds.Tables["Shippers"].DefaultView;
            MyDataGrid.DataBind();
    }
    
    public void MyDataGrid_Edit(Object sender, DataGridCommandEventArgs E)
    {
        //指定用户要编辑的记录
        MyDataGrid.EditItemIndex = (int)E.Item.ItemIndex;
        BindGrid();
    }

    public void MyDataGrid_Cancel(Object sender, DataGridCommandEventArgs E)
    {
        //将要编辑的记录改为-1,意味着没有记录将被编辑
        MyDataGrid.EditItemIndex = -1;
        BindGrid();
    }
    
    public void MyDataGrid_Update(Object sender, DataGridCommandEventArgs E)
    {
        //执行更新操作的SQL语句
        String updateCmd = "UPDATE Shippers SET CompanyName = @CompanyName, Phone = @Phone where ShipperID = @Id ";
        //创建SqlCommand对象
        SqlCommand MC = new SqlCommand(updateCmd, myConnection);
        //添加三个参数对象
        MC.Parameters.Add(new SqlParameter("@Id", SqlDbType.Int, 4));
        MC.Parameters.Add(new SqlParameter("@CompanyName", SqlDbType.NVarChar, 40));
        MC.Parameters.Add(new SqlParameter("@Phone", SqlDbType.NVarChar, 24));
        //将ID参数设定为要编辑的记录的主键值
        MC.Parameters["@Id"].Value = MyDataGrid.DataKeys[(int)E.Item.ItemIndex];
        
        String[] cols = {"@CompanyName","@Phone"};
        //变量numCols为记录的字段数
        int numCols = E.Item.Cells.Count;
        for (int i=1; i<numCols-1; i++) //跳过记录的第一个和最后一个字段
        {
            //将要更新的记录的字段值保存在变量colvalue中
            String colvalue =((TextBox)E.Item.Cells[i].Controls[0]).Text;
            //检查是否为空记录
            if (colvalue == "") 
            {
                Message.InnerHtml = "错误: 公司名、电话号码不能为空";
                Message.Style["color"] = "red";
                return;
            }
            //将更新记录的参数值设定为用户输入框中的值
            MC.Parameters[cols[i-1]].Value = colvalue;
        }
        //打开命令对象的连接
        MC.Connection.Open();
        try 
        {
            //执行更新操作
            MC.ExecuteNonQuery();
            Message.InnerHtml = "<b>记录更新成功</b><br>";
            MyDataGrid.EditItemIndex = -1;
        }
        catch (SqlException e)
        {
            Message.InnerHtml = "错误: 记录更新失败";
            Message.Style["color"] = "red";
        }

        MC.Connection.Close();

        BindGrid();
    }

</script>
<body>
  <h3>清单</h3>
  <form runat=server>
  <ASP:DataGrid id="MyDataGrid" runat="server"
        BorderColor="black"
        HeaderStyle-BackColor="#aaaadd"
        PagerStyle-HorizontalAlign="Right"
        PagerStyle-Mode="NumericPages"
        AutoGenerateColumns="false"
        DataKeyField="ShipperID"
        OnEditCommand="MyDataGrid_Edit"
        OnCancelCommand="MyDataGrid_Cancel"
        OnUpdateCommand="MyDataGrid_Update">
        
       	<Columns>
  	    <asp:BoundColumn HeaderText="序号" ReadOnly="true" DataField="ShipperID"/>
            <asp:BoundColumn HeaderText="名称" DataField="CompanyName" />
            <asp:BoundColumn HeaderText="电话" DataField="Phone"/>
  	    <asp:EditCommandColumn
                EditText="Edit"
                CancelText="Cancel"
                UpdateText="Update"
                ItemStyle-Wrap="false"
                HeaderText="编辑"
                HeaderStyle-Wrap="false"
                />
          </Columns>
    </asp:DataGrid><br>
   <span id="Message" EnableViewState="false"  runat="server"/>
  </form>
</body>
</html>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -