📄 updatingdata.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 + -