ASP在sqlDataSource中创建自己的更新语句

时间:2017-05-12 01:00:34

标签: c# sql asp.net gridview sqldatasource

我正在尝试使用VisualStudio中的图形界面进行自己的更新,但我的更新不起作用。

当我在查询构建器中测试它时一切正常但是当我点击更新后运行网页时添加到网格它恢复到以前的状态,因为更新没有做任何事情。

Params("ID,IsCompleted")被添加到GridView的Property中的DataKeyNames。 不幸的是,我找不到任何使用图形界面的解决方案。

enter image description here

1 个答案:

答案 0 :(得分:0)

订阅SqlDataSource的OnUpdated事件,检查AffectedRows值。
ref msdn SqlDataSource.UpdateCommand
代码

private void OnDSUpdatedHandler(Object source, SqlDataSourceStatusEventArgs e) {
    if (e.AffectedRows > 0) {
        // Perform any additional processing, 
        // such as setting a status label after the operation.
        Label1.Text = Request.LogonUserIdentity.Name +
            " changed user information successfully!";    
    }
    else {
        Label1.Text = "No data updated!";
    }
 }

aspx

<asp:SqlDataSource
  id="SqlDataSource1"
  runat="server"
  DataSourceMode="DataSet"
  ConnectionString="<%$ ConnectionStrings:MyNorthwind%>"
  SelectCommand="SELECT EmployeeID,FirstName,LastName,Title FROM Employees"
  UpdateCommand="Update Employees SET FirstName=@FirstName,LastName=@LastName,Title=@Title WHERE EmployeeID=@EmployeeID"
  OnUpdated="OnDSUpdatedHandler">
</asp:SqlDataSource>

<asp:GridView
  id="GridView1"
  runat="server"
  AutoGenerateColumns="False"
  DataKeyNames="EmployeeID"
  AutoGenerateEditButton="True"
  DataSourceID="SqlDataSource1">
  <columns>
      <asp:BoundField HeaderText="First Name" DataField="FirstName" />
      <asp:BoundField HeaderText="Last Name" DataField="LastName" />
      <asp:BoundField HeaderText="Title" DataField="Title" />
  </columns>
</asp:GridView>

<asp:Label
  id="Label1"
  runat="server">
</asp:Label>

其他参考SqlDataSourceView.OnUpdating