c# - 代码隐藏中的 GridView RowUpdating SqlDataSource.Update

标签 c# asp.net sql code-behind sqldatasource

所以我在 OnRowUpdating 事件期间在 Gridview 中进行更新时遇到问题。

我想做的是在 SqlDataSource 中设置 UpdateCommand,然后使用该命令进行更新。事件正常触发,但事件完成后,该行似乎永远不会更新。

C#:

protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
    SqlDataSource1.UpdateCommand = "UPDATE A_Table SET Something = @AValue WHERE ID = " + e.RowIndex;

    SqlDataSource1.Update();
}

编辑:重写了我的示例更新命令...它实际上是一个更新命令,而不是一个选择命令哈哈。

最佳答案

此处的其他答案非常正确地指出了您的 UpdateCommand 的问题。

正如我之前在评论中提到的,我只是指出这比您那里的要容易一些。将 GridViewSQLDataSource 一起使用时,只要您设置正确,就会为您完成很多工作。

首先,在 SQLDataSource 的标记中定义您的 UpdateCommand,如下所示:

<asp:SqlDataSource ID="SqlDataSource1" runat="server" 
    ConnectionString="Your Connection String Here" 
    ProviderName="System.Data.SqlClient" 
    SelectCommand="SELECT ColPK, ColA, ColB, ColC FROM Table_Name" 
    UpdateCommand="UPDATE Table_Name 
                   SET ColA=@ColA,  ColB=@ColB, ColC=@ColC, 
                   WHERE ColPK=@ColPK">
</asp:SqlDataSource>

(ColPK 将是您要更新的表的主键)

然后,您可以在 GridView 标记中将“AutoGenerateEditButton”设置为 true,噗!您可以更新 GridView(无需在代码后面执行任何操作)。

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 
    AutoGenerateEditButton="True" DataKeyNames="ColPK" 
    DataSourceID="SqlDataSource1">
    <Columns>
        <asp:BoundField DataField="ColPK" HeaderText="Column PK" 
            SortExpression="ColA" ReadOnly="True" />
        <asp:BoundField DataField="ColA" HeaderText="Column A" 
            SortExpression="ColA" />
        <asp:BoundField DataField="ColB" HeaderText="Column B" 
            SortExpression="ColB" />
        <asp:BoundField DataField="ColC" HeaderText="Column C" 
            SortExpression="ColC" />
    </Columns>
</asp:GridView>

现在,如果你需要做额外的处理,你仍然可以在你的代码中处理 OnRowUpdating 事件,或者根据一些逻辑取消 Update 等。但是基本的更新功能几乎是免费的!

关于c# - 代码隐藏中的 GridView RowUpdating SqlDataSource.Update,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7680153/

相关文章:

html - 如何对齐这个asp :TextBox with the other divs

sql - MySQL - 如何在邮政编码前加上 "0"?

c# - 依赖注入(inject)与泛型相结合

c# - Horizo​​ntalAlignment ="Stretch"在 TreeViewItem 中不起作用

c# - 在 IDisposable 派生类中应该在哪里释放单例互斥量?

asp.net - ASP.NET 验证规则可以属于多个组吗?

c# - Azure Blob 存储的文件大小限制?

c# - 邮件正文中未显示 Outlook attachments.Add()

sql - 使用 SQL Server 中的条件从存储过程中调用存储过程的正确语法是什么

SQL Server,where 子句与不同类型的比较和默认转换行为