C# 网格视图更新

C# 网格视图更新,c#,C#,我有一个网格视图,它绑定sql数据源,并在网格视图中添加字段来更新数据,但它没有进行任何更新,也没有出现错误,我不知道错误在哪里 SQL存储过程: ALTER proc [dbo].[GetNewswithType] As Begin Select News.Id,News.Type_Id, News.Header,News.HText,News.DText,News.Active,News.Add_Date, NewsType.Type_AR,NewsType.Type_EN From New

我有一个网格视图,它绑定sql数据源,并在网格视图中添加字段来更新数据,但它没有进行任何更新,也没有出现错误,我不知道错误在哪里

SQL存储过程:

ALTER proc [dbo].[GetNewswithType]
As
Begin
Select News.Id,News.Type_Id,
News.Header,News.HText,News.DText,News.Active,News.Add_Date,
NewsType.Type_AR,NewsType.Type_EN
From News
Inner Join NewsType On 
NewsType.Id=News.Type_Id
End  

ALTER Proc [dbo].[UpdateNews]
(
@Id Int
,@Header Nvarchar(50)
,@HText Nvarchar(Max)
,@DText  Nvarchar(Max)
,@Type_Id Int
,@Active Bit

)
AS
BEGIN 
Update News Set 

@Header =Header 
,@HText =HText 
,@DText  =DText 
,@Type_Id=Type_Id
,@Active =Active 

WHERE @Id=Id
END
ASPX页面:

<div class="m10">
    <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 
        BackColor="White" BorderColor="#DEDFDE" BorderStyle="None" BorderWidth="1px" 
        CellPadding="4" DataKeyNames="Id" DataSourceID="SDSNews" ForeColor="Black" 
        GridLines="Vertical" 
        onselectedindexchanged="GridView1_SelectedIndexChanged" 
        onselectedindexchanging="GridView1_SelectedIndexChanging" 
            onpageindexchanging="GridView1_PageIndexChanging" AllowPaging="True" 
            onrowupdated="GridView1_RowUpdated" 
            onrowdatabound="GridView1_RowDataBound">
        <FooterStyle BackColor="#CCCC99" />
        <RowStyle BackColor="#F7F7DE" />
        <Columns>
            <asp:CommandField HeaderText="Function" ShowEditButton="True" />
            <asp:BoundField DataField="Id" HeaderText="Id" SortExpression="Id" 
                Visible="False" />
            <asp:BoundField DataField="Header" HeaderText="Header" 
                SortExpression="Header" />
            <asp:BoundField DataField="HText" HeaderText="HomeText" 
                SortExpression="HText" />
            <asp:BoundField DataField="DText" HeaderText="DetailsText" 
                SortExpression="DText" />
            <asp:BoundField DataField="Type_Id" HeaderText="TypeNumber" 
                SortExpression="Type_Id" />
            <asp:BoundField DataField="Type_AR" HeaderText="Type_AR" 
                SortExpression="Type_AR" InsertVisible="False" ReadOnly="True" />
            <asp:BoundField DataField="Type_EN" HeaderText="Type_EN" 
                SortExpression="Type_EN" InsertVisible="False" ReadOnly="True" />
            <asp:CheckBoxField DataField="Active" HeaderText="Active" 
                SortExpression="Active" />
            <asp:BoundField DataField="Add_Date" HeaderText="Add_Date" 
                SortExpression="Add_Date" InsertVisible="False" ReadOnly="True" />
        </Columns>
        <PagerStyle BackColor="#F7F7DE" ForeColor="Black" HorizontalAlign="Right" />
        <SelectedRowStyle BackColor="#CE5D5A" Font-Bold="True" ForeColor="White" />
        <HeaderStyle BackColor="#6B696B" Font-Bold="True" ForeColor="White" />
        <AlternatingRowStyle BackColor="White" />
    </asp:GridView>
        <asp:SqlDataSource ID="SDSNews" runat="server" 
            ConnectionString="Data Source=ELARABY-1EACFA3\SQLEXPRESS;Initial Catalog=ElarabyGroup;Integrated Security=True" 
            ProviderName="System.Data.SqlClient" SelectCommand="GetNewswithType" 
            SelectCommandType="StoredProcedure" UpdateCommand="UpdateNews" 
            UpdateCommandType="StoredProcedure">
            <UpdateParameters>
                <asp:ControlParameter ControlID="GridView1" Name="Id" 
                    PropertyName="SelectedValue" Type="Int32" />
                <asp:ControlParameter ControlID="GridView1" Name="Header" 
                    PropertyName="SelectedValue" Type="String" />
                <asp:ControlParameter ControlID="GridView1" Name="HText" 
                    PropertyName="SelectedValue" Type="String" />
                <asp:ControlParameter ControlID="GridView1" Name="DText" 
                    PropertyName="SelectedValue" Type="String" />
                <asp:ControlParameter ControlID="GridView1" Name="Type_Id" 
                    PropertyName="SelectedValue" Type="Int32" />
                <asp:ControlParameter ControlID="GridView1" Name="Active" 
                    PropertyName="SelectedValue" Type="Boolean" />
            </UpdateParameters>
        </asp:SqlDataSource>
    </div>

在更新过程中添加一些代码,以确定是否正在调用它:

  • 创建一个名为
    Logging
    (或您选择的任何名称)的表,该表有一个名为
    Message
    (同样,或您选择的任何名称)的列
  • UpdateNews
    过程中添加一行代码,将其插入[dbo].[Logging](消息)值(“调用的过程”)。如果愿意,您可以记录传入的参数的值
  • 通过这样做,您可以确定是否实际调用了存储过程。另一个选项是用来确定这一点。如果您可以确定它正在调用存储过程,那么其中出现了问题,通过记录参数,您可以“手动调用”它以找出原因


    更有可能的是,存储过程从未被调用,您如何告诉网格将更改持久化回数据库?请看,我建议您的更新不会触发“保存”

    在更新过程中添加一些代码,以确定是否正在调用它:

  • 创建一个名为
    Logging
    (或您选择的任何名称)的表,该表有一个名为
    Message
    (同样,或您选择的任何名称)的列
  • UpdateNews
    过程中添加一行代码,将其插入[dbo].[Logging](消息)值(“调用的过程”)。如果愿意,您可以记录传入的参数的值
  • 通过这样做,您可以确定是否实际调用了存储过程。另一个选项是用来确定这一点。如果您可以确定它正在调用存储过程,那么其中出现了问题,通过记录参数,您可以“手动调用”它以找出原因


    更有可能的是,存储过程从未被调用,您如何告诉网格将更改持久化回数据库?请看,我建议您的更新不会触发“保存”

    我这样做了,消息是('Procedure Called'),但问题是我不知道。您需要按照我在第2点中的建议调整
    插入到
    行中,以便它将所有传递的参数存储到日志记录表中。这样,您就可以使用记录的值来手动调用该过程并确定出现了什么问题。简而言之,如果过程确实被调用,那么很可能您的过程有问题。我忘了告诉您新闻表有外键(Type_Id)到表newtype(Id)主键,我这样做了,消息是('procedure called')但是我不知道的问题是,您需要调整插入到
    行中的
    ,正如我在第2点中建议的那样,以便它将所有传递的参数存储到日志记录表中。这样,您就可以使用记录的值来手动调用该过程并确定出现了什么问题。简言之,如果过程确实被调用,很可能您的过程有问题。我忘了告诉您,新闻表有外键(Type_Id)到表新闻类型(Id)主键