【问题标题】:SQL Server Stored Procedure Update not working with ASP.Net C# GridView RowUpdatingSQL Server 存储过程更新不适用于 ASP.Net C# GridView RowUpdating
【发布时间】:2014-03-21 17:09:39
【问题描述】:

我遇到了问题,但没有抛出任何错误。发生的事情是我有一个存储过程正在驱动我的更新,但我无法让 gridview 更新。

我点击了Update 链接按钮,但它实际上并没有更新记录。

这是我的存储过程:

ALTER PROCEDURE [dbo].[CompDev_Update](
@CompID int,
@NewDevCount nchar(10) = null,
@DevelopmentName nvarchar(255) = null,
@City nvarchar(255) = null,
@State nvarchar(255) = null,
@ZipCodeofNewDev nchar(10) = null,
@ProjectStatus nvarchar(255) = null,
@ShoppingCenter nvarchar(255) = null,
@ProjectStartDate float = null,
@ProjectDescription nvarchar(255) = null,
@ProposedAnchorTenants nvarchar(255) = null,
@GLA nchar(10) = null,
@EstCompDate float = null,
@Developer nvarchar(255) = null,
@BusinessUnit nchar(10) = null,
@BU nchar(10) = null,
@CenterName nvarchar(255) = null,
@MSA nvarchar(255) = null,
@BrixmorMSARank nchar(10) = null,
@Count nchar(10) = null,
@Region nvarchar(255) = null,
@DistancefromNewDev nchar(10) = null
)
   AS
   BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;

-- Insert statements for procedure here
UPDATE WestCompetition Set NewDevCount=@NewDevCount, DevelopmentName=@DevelopmentName,
    City=@City, [State]=@State, ZipCodeofNewDev=@ZipCodeofNewDev, ProjectStatus=@ProjectStatus,
    ShoppingCenter=@ShoppingCenter, ProjectStartDate=@ProjectStartDate, ProjectDescription=@ProjectDescription,
    ProposedAnchorTenants=@ProposedAnchorTenants, GLA=@GLA, EstCompDate=@EstCompDate,
    Developer=@Developer, BusinessUnit=@BusinessUnit, BU=@BU, CenterName=@CenterName,
    MSA=@MSA, BrixmorMSARank=@BrixmorMSARank, [Count]=@Count, Region=@Region,
    DistancefromNewDev=@DistancefromNewDev
    WHERE CompID = @CompID

结束

这是我的asp.net c#背后的代码:

 protected void gvCompetition_RowUpdating(object sender, GridViewUpdateEventArgs e)
    {
        Label CompID = (Label)gvCompetition.Rows[e.RowIndex].FindControl("lblCompID");
        TextBox NewDevCount = (TextBox)gvCompetition.Rows[e.RowIndex].FindControl("txtNewDevCount");
        TextBox DevelopmentName = (TextBox)gvCompetition.Rows[e.RowIndex].FindControl("txtDevelopmentName");
        TextBox City = (TextBox)gvCompetition.Rows[e.RowIndex].FindControl("txtCity");
        TextBox State = (TextBox)gvCompetition.Rows[e.RowIndex].FindControl("txtState");
        TextBox ZipCodeofNewDev = (TextBox)gvCompetition.Rows[e.RowIndex].FindControl("txtZipCode");
        TextBox ProjectStatus = (TextBox)gvCompetition.Rows[e.RowIndex].FindControl("txtProjectStatus");
        TextBox ShoppingCenter = (TextBox)gvCompetition.Rows[e.RowIndex].FindControl("txtShoppingCenter");
        TextBox ProjectStartDate = (TextBox)gvCompetition.Rows[e.RowIndex].FindControl("txtProjectStartDate");
        TextBox ProjectDescription = (TextBox)gvCompetition.Rows[e.RowIndex].FindControl("txtProjectDescription");
        TextBox ProposedAnchorTenants = (TextBox)gvCompetition.Rows[e.RowIndex].FindControl("txtProposedAnchorTenants");
        TextBox GLA = (TextBox)gvCompetition.Rows[e.RowIndex].FindControl("txtGLA");
        TextBox EstCompDate = (TextBox)gvCompetition.Rows[e.RowIndex].FindControl("txtEstCompDate");
        TextBox Developer = (TextBox)gvCompetition.Rows[e.RowIndex].FindControl("txtDeveloper");
        TextBox BusinessUnit = (TextBox)gvCompetition.Rows[e.RowIndex].FindControl("txtBusinessUnit");
        TextBox BU = (TextBox)gvCompetition.Rows[e.RowIndex].FindControl("txtBU");
        TextBox CenterName = (TextBox)gvCompetition.Rows[e.RowIndex].FindControl("txtCenterName");
        TextBox MSA = (TextBox)gvCompetition.Rows[e.RowIndex].FindControl("txtMSA");
        TextBox BrixmorMSARank = (TextBox)gvCompetition.Rows[e.RowIndex].FindControl("txtBrixmorMSARank");
        TextBox Count = (TextBox)gvCompetition.Rows[e.RowIndex].FindControl("txtCount");
        TextBox Region = (TextBox)gvCompetition.Rows[e.RowIndex].FindControl("txtRegion");
        TextBox DistancefromNewDev = (TextBox)gvCompetition.Rows[e.RowIndex].FindControl("txtDistancefromNewDev");
        string ecompid = CompID.Text;
        string enewdevcount = NewDevCount.Text;
        string edevelopmentname = DevelopmentName.Text;
        string ecity = City.Text;
        string estate = State.Text;
        string ezipcode = ZipCodeofNewDev.Text;
        string eprojectstatus = ProjectStatus.Text;
        string eshoppingcenter = ShoppingCenter.Text;
        string eprojectstartdate = ProjectStartDate.Text;
        string eprojectdescription = ProjectDescription.Text;
        string eproposedanchor = ProposedAnchorTenants.Text;
        string egla = GLA.Text;
        string eestcompdate = EstCompDate.Text;
        string edeveloper = Developer.Text;
        string ebusinessunit = BusinessUnit.Text;
        string ebu = BU.Text;
        string ecentername = CenterName.Text;
        string emsa = MSA.Text;
        string ebrixmormsarank = BrixmorMSARank.Text;
        string ecount = Count.Text;
        string eregion = Region.Text;
        string edistancefromnewdev = DistancefromNewDev.Text;

        UpdateCompetition(ecompid, enewdevcount, edevelopmentname, ecity, estate, ezipcode, eprojectstatus, eshoppingcenter, eprojectstartdate, eprojectdescription, eproposedanchor,
            egla, eestcompdate, edeveloper, ebusinessunit, ebu, ecentername, emsa, ebrixmormsarank, ecount, eregion, edistancefromnewdev);

        gvCompetition.EditIndex = -1;
        BindCompetition();
    }

    protected void UpdateCompetition(string compid, string newdevcount, string developmentname, string city, string state, string zipcode,
        string projectstatus, string shoppingcenter, string projectstartdate, string projectdescription, string proposedanchor, string gla,
        string estcompdate, string developer, string businessunit, string bu, string centername, string msa, string brixmormsarank,
        string count, string region, string distancefromnewdev)
    {
        SqlConnection conn = new SqlConnection(cnnString);
        conn.Open();
        command = new SqlCommand();
        command.Connection = conn;
        command.CommandType = CommandType.StoredProcedure;
        command.CommandText = "CompDev_Update";

        command.Parameters.Add(new SqlParameter("@CompID", SqlDbType.Int));
        command.Parameters.Add(new SqlParameter("@NewDevCount", SqlDbType.NChar, 10));
        command.Parameters.Add(new SqlParameter("@DevelopmentName", SqlDbType.NVarChar, 255));
        command.Parameters.Add(new SqlParameter("@City", SqlDbType.NVarChar, 255));
        command.Parameters.Add(new SqlParameter("@State", SqlDbType.NVarChar, 255));
        command.Parameters.Add(new SqlParameter("@ZipCodeofNewDev", SqlDbType.NChar, 10));
        command.Parameters.Add(new SqlParameter("@ProjectStatus", SqlDbType.NVarChar, 255));
        command.Parameters.Add(new SqlParameter("@ShoppingCenter", SqlDbType.NVarChar, 255));
        command.Parameters.Add(new SqlParameter("@ProjectStartDate", SqlDbType.Float));
        command.Parameters.Add(new SqlParameter("@ProjectDescription", SqlDbType.NVarChar, 255));
        command.Parameters.Add(new SqlParameter("@ProposedAnchorTenants", SqlDbType.NVarChar, 255));
        command.Parameters.Add(new SqlParameter("@GLA", SqlDbType.NChar, 10));
        command.Parameters.Add(new SqlParameter("@EstCompDate", SqlDbType.Float));
        command.Parameters.Add(new SqlParameter("@Developer", SqlDbType.NVarChar, 255));
        command.Parameters.Add(new SqlParameter("@BusinessUnit", SqlDbType.NChar, 10));
        command.Parameters.Add(new SqlParameter("@BU", SqlDbType.NChar, 10));
        command.Parameters.Add(new SqlParameter("@CenterName", SqlDbType.NVarChar, 255));
        command.Parameters.Add(new SqlParameter("@MSA", SqlDbType.NChar, 10));
        command.Parameters.Add(new SqlParameter("@BrixmorMSARank", SqlDbType.NChar, 10));
        command.Parameters.Add(new SqlParameter("@Count", SqlDbType.NChar, 10));
        command.Parameters.Add(new SqlParameter("@Region", SqlDbType.NVarChar, 255));
        command.Parameters.Add(new SqlParameter("@DistancefromNewDev", SqlDbType.NChar, 10));

        command.Parameters["@CompID"].Value = Convert.ToInt32(compid.ToString());
        command.Parameters["@NewDevCount"].Value = newdevcount;
        command.Parameters["@DevelopmentName"].Value = developmentname;
        command.Parameters["@City"].Value = city;
        command.Parameters["@State"].Value = state;
        command.Parameters["@ZipCodeofNewDev"].Value = zipcode;
        command.Parameters["@ProjectStatus"].Value = projectstatus;
        command.Parameters["@ShoppingCenter"].Value = shoppingcenter;
        command.Parameters["@ProjectStartDate"].Value = projectstartdate;
        command.Parameters["@ProjectDescription"].Value = projectdescription;
        command.Parameters["@ProposedAnchorTenants"].Value = proposedanchor;
        command.Parameters["@GLA"].Value = gla;
        command.Parameters["@EstCompDate"].Value = estcompdate;
        command.Parameters["@Developer"].Value = developer;
        command.Parameters["@BusinessUnit"].Value = businessunit;
        command.Parameters["@BU"].Value = bu;
        command.Parameters["@CenterName"].Value = centername;
        command.Parameters["@MSA"].Value = msa;
        command.Parameters["@BrixmorMSARank"].Value = brixmormsarank;
        command.Parameters["@Count"].Value = count;
        command.Parameters["@Region"].Value = region;
        command.Parameters["@DistancefromNewDev"].Value = distancefromnewdev;

        da = new SqlDataAdapter(command);
        ds = new DataSet();
        da.Fill(ds);

        conn.Close();
    }

这是我的 asp.net 代码:

<asp:UpdatePanel runat="server" UpdateMode="Conditional">
    <ContentTemplate>
            <asp:GridView ID="gvCompetition" OnPageIndexChanging="gvCompetition_PageIndexChanging" 
                OnRowEditing="gvCompetition_RowEditing" OnRowCancelingEdit="gvCompetition_RowCancelingEdit"
                OnRowUpdating="gvCompetition_RowUpdating"
                runat="server" BackColor="White" BorderColor="#DEDFDE" BorderStyle="None" 
                BorderWidth="1px" CellPadding="1" ForeColor="Black" GridLines="Vertical" 
                AllowPaging="True" AutoGenerateColumns="False" Font-Size="10px">
                <AlternatingRowStyle BackColor="White" />
                <FooterStyle BackColor="#CCCC99" />
                <HeaderStyle BackColor="#7a1501" Font-Bold="True" ForeColor="White" />
                <PagerStyle BackColor="#ed2d22" ForeColor="Black" HorizontalAlign="Right" />
                <RowStyle BackColor="#f68121" BorderColor="#999999" BorderStyle="Solid" BorderWidth="1px" />
                <SelectedRowStyle BackColor="#CE5D5A" Font-Bold="True" ForeColor="White" />
                <SortedAscendingCellStyle BackColor="#FBFBF2" />
                <SortedAscendingHeaderStyle BackColor="#848384" />
                <SortedDescendingCellStyle BackColor="#EAEAD3" />
                <SortedDescendingHeaderStyle BackColor="#575357" />
                <Columns>
                    <asp:templatefield Headertext="ID">
                        <itemtemplate>
                            <asp:label ID="lblCompID" runat="server" text='<%#Eval("CompID") %>'></asp:label>
                        </itemtemplate>
                    </asp:templatefield>

                    <asp:TemplateField HeaderText="New Dev Count">
                        <ItemTemplate>
                            <asp:Label ID="lblNewDevCount" runat="server" Text='<%#Eval("NewDevCount") %>'></asp:Label>
                        </ItemTemplate>
                        <EditItemTemplate>
                            <asp:TextBox ID="txtNewDevCount" Width="100%" runat="server" Text='<%#Eval("NewDevCount") %>'></asp:TextBox>
                        </EditItemTemplate>
                    </asp:TemplateField>

                    <asp:TemplateField HeaderText="Development Name">
                        <ItemTemplate>
                            <asp:Label ID="lblDevelopmentName" runat="server" Text='<%#Eval("DevelopmentName") %>'></asp:Label>
                        </ItemTemplate>
                        <EditItemTemplate>
                            <asp:TextBox ID="txtDevelopmentName" Width="100%" runat="server" Text='<%#Eval("DevelopmentName") %>'></asp:TextBox>
                        </EditItemTemplate>
                    </asp:TemplateField>

                    <asp:TemplateField HeaderText="City">
                        <ItemTemplate>
                            <asp:Label ID="lblCity" runat="server" Text='<%#Eval("City") %>'></asp:Label>
                        </ItemTemplate>
                        <EditItemTemplate>
                            <asp:TextBox ID="txtCity" Width="100%" runat="server" Text='<%#Eval("City") %>'></asp:TextBox>
                        </EditItemTemplate>
                    </asp:TemplateField>

                    <asp:TemplateField HeaderText="State">
                        <ItemTemplate>
                            <asp:Label ID="lblState" runat="server" Text='<%#Eval("State") %>'></asp:Label>
                        </ItemTemplate>
                        <EditItemTemplate>
                            <asp:TextBox ID="txtState" Width="100%" runat="server" Text='<%#Eval("State") %>'></asp:TextBox>
                        </EditItemTemplate>
                    </asp:TemplateField>

                    <asp:TemplateField HeaderText="Zip Code">
                        <ItemTemplate>
                            <asp:Label ID="lblZipCode" runat="server" Text='<%#Eval("ZipCodeofNewDev") %>'></asp:Label>
                        </ItemTemplate>
                        <EditItemTemplate>
                            <asp:TextBox ID="txtZipCode" Width="100%" runat="server" Text='<%#Eval("ZipCodeofNewDev") %>'></asp:TextBox>
                        </EditItemTemplate>
                    </asp:TemplateField>

                    <asp:TemplateField HeaderText="Project Status">
                        <ItemTemplate>
                            <asp:Label ID="lblProjectStatus" runat="server" Text='<%#Eval("ProjectStatus") %>'></asp:Label>
                        </ItemTemplate>
                        <EditItemTemplate>
                            <asp:TextBox ID="txtProjectStatus" Width="100%" runat="server" Text='<%#Eval("ProjectStatus") %>'></asp:TextBox>
                        </EditItemTemplate>
                    </asp:TemplateField>

                    <asp:TemplateField HeaderText="Shopping Center">
                        <ItemTemplate>
                            <asp:Label ID="lblShoppingCenter" runat="server" Text='<%#Eval("ShoppingCenter") %>'></asp:Label>
                        </ItemTemplate>
                        <EditItemTemplate>
                            <asp:TextBox ID="txtShoppingCenter" Width="100%" runat="server" Text='<%#Eval("ShoppingCenter") %>'></asp:TextBox>
                        </EditItemTemplate>
                    </asp:TemplateField>

                    <asp:TemplateField HeaderText="Project Start Date">
                        <ItemTemplate>
                            <asp:Label ID="lblProjectStartDate" runat="server" Text='<%#Eval("ProjectStartDate") %>'></asp:Label>
                        </ItemTemplate>
                        <EditItemTemplate>
                            <asp:TextBox ID="txtProjectStartDate" Width="100%" runat="server" Text='<%#Eval("ProjectStartDate") %>'></asp:TextBox>
                        </EditItemTemplate>
                    </asp:TemplateField>

                    <asp:TemplateField HeaderText="Project Description">
                        <ItemTemplate>
                            <asp:Label ID="lblProjectDescription" runat="server" Text='<%#Eval("ProjectDescription") %>'></asp:Label>
                        </ItemTemplate>
                        <EditItemTemplate>
                            <asp:TextBox ID="txtProjectDescription" Width="100%" runat="server" Text='<%#Eval("ProjectDescription") %>'></asp:TextBox>
                        </EditItemTemplate>
                    </asp:TemplateField>

                    <asp:TemplateField HeaderText="Proposed Anchor Tenants">
                        <ItemTemplate>
                            <asp:Label ID="lblProposedAnchorTenants" runat="server" Text='<%#Eval("ProposedAnchorTenants") %>'></asp:Label>
                        </ItemTemplate>
                        <EditItemTemplate>
                            <asp:TextBox ID="txtProposedAnchorTenants" Width="100%" runat="server" Text='<%#Eval("ProposedAnchorTenants") %>'></asp:TextBox>
                        </EditItemTemplate>
                    </asp:TemplateField>

                    <asp:TemplateField HeaderText="GLA">
                        <ItemTemplate>
                            <asp:Label ID="lblGLA" runat="server" Text='<%#Eval("GLA") %>'></asp:Label>
                        </ItemTemplate>
                        <EditItemTemplate>
                            <asp:TextBox ID="txtGLA" Width="100%" runat="server" Text='<%#Eval("GLA") %>'></asp:TextBox>
                        </EditItemTemplate>
                    </asp:TemplateField>

                    <asp:TemplateField HeaderText="Est. Completion Date">
                        <ItemTemplate>
                            <asp:Label ID="lblEstCompDate" runat="server" Text='<%#Eval("EstCompDate") %>'></asp:Label>
                        </ItemTemplate>
                        <EditItemTemplate>
                            <asp:TextBox ID="txtEstCompDate" Width="100%" runat="server" Text='<%#Eval("EstCompDate") %>'></asp:TextBox>
                        </EditItemTemplate>
                    </asp:TemplateField>

                    <asp:TemplateField HeaderText="Developer">
                        <ItemTemplate>
                            <asp:Label ID="lblDeveloper" runat="server" Text='<%#Eval("Developer") %>'></asp:Label>
                        </ItemTemplate>
                        <EditItemTemplate>
                            <asp:TextBox ID="txtDeveloper" Width="100%" runat="server" Text='<%#Eval("Developer") %>'></asp:TextBox>
                        </EditItemTemplate>
                    </asp:TemplateField>

                    <asp:TemplateField HeaderText="Business Unit">
                        <ItemTemplate>
                            <asp:Label ID="lblBusinessUnit" runat="server" Text='<%#Eval("BusinessUnit") %>'></asp:Label>
                        </ItemTemplate>
                        <EditItemTemplate>
                            <asp:TextBox ID="txtBusinessUnit" Width="100%" runat="server" Text='<%#Eval("BusinessUnit") %>'></asp:TextBox>
                        </EditItemTemplate>
                    </asp:TemplateField>

                    <asp:TemplateField HeaderText="BU">
                        <ItemTemplate>
                            <asp:Label ID="lblBU" runat="server" Text='<%#Eval("BU") %>'></asp:Label>
                        </ItemTemplate>
                        <EditItemTemplate>
                            <asp:TextBox ID="txtBU" Width="100%" runat="server" Text='<%#Eval("BU") %>'></asp:TextBox>
                        </EditItemTemplate>
                    </asp:TemplateField>

                    <asp:TemplateField HeaderText="CenterName">
                        <ItemTemplate>
                            <asp:Label ID="lblCenterName" runat="server" Text='<%#Eval("CenterName") %>'></asp:Label>
                        </ItemTemplate>
                        <EditItemTemplate>
                            <asp:TextBox ID="txtCenterName" Width="100%" runat="server" Text='<%#Eval("CenterName") %>'></asp:TextBox>
                        </EditItemTemplate>
                    </asp:TemplateField>

                    <asp:TemplateField HeaderText="MSA">
                        <ItemTemplate>
                            <asp:Label ID="lblMSA" runat="server" Text='<%#Eval("MSA") %>'></asp:Label>
                        </ItemTemplate>
                        <EditItemTemplate>
                            <asp:TextBox ID="txtMSA" Width="100%" runat="server" Text='<%#Eval("MSA") %>'></asp:TextBox>
                        </EditItemTemplate>
                    </asp:TemplateField>

                    <asp:TemplateField HeaderText="Brixmor MSA Rank">
                        <ItemTemplate>
                            <asp:Label ID="lblBrixmorMSARank" runat="server" Text='<%#Eval("BrixmorMSARank") %>'></asp:Label>
                        </ItemTemplate>
                        <EditItemTemplate>
                            <asp:TextBox ID="txtBrixmorMSARank" Width="100%" runat="server" Text='<%#Eval("BrixmorMSARank") %>'></asp:TextBox>
                        </EditItemTemplate>
                    </asp:TemplateField>

                    <asp:TemplateField HeaderText="Count">
                        <ItemTemplate>
                            <asp:Label ID="lblCount" runat="server" Text='<%#Eval("Count") %>'></asp:Label>
                        </ItemTemplate>
                        <EditItemTemplate>
                            <asp:TextBox ID="txtCount" Width="100%" runat="server" Text='<%#Eval("Count") %>'></asp:TextBox>
                        </EditItemTemplate>
                    </asp:TemplateField>

                    <asp:TemplateField HeaderText="Region">
                        <ItemTemplate>
                            <asp:Label ID="lblRegion" runat="server" Text='<%#Eval("Region") %>'></asp:Label>
                        </ItemTemplate>
                        <EditItemTemplate>
                            <asp:TextBox ID="txtRegion" Width="100%" runat="server" Text='<%#Eval("Region") %>'></asp:TextBox>
                        </EditItemTemplate>
                    </asp:TemplateField>

                    <asp:TemplateField HeaderText="Distance from New Dev">
                        <ItemTemplate>
                            <asp:Label ID="lblDistancefromNewDev" runat="server" Text='<%#Eval("DistancefromNewDev") %>'></asp:Label>
                        </ItemTemplate>
                        <EditItemTemplate>
                            <asp:TextBox ID="txtDistancefromNewDev" Width="100%" runat="server" Text='<%#Eval("DistancefromNewDev") %>'></asp:TextBox>
                        </EditItemTemplate>
                    </asp:TemplateField>


                    <asp:TemplateField HeaderText="Edit">
                        <ItemTemplate>
                            <asp:LinkButton ID="btnEdit" Text="EDIT" runat="server" CommandName="Edit" />

                            <span onclick="return confirm('Are you sure you want to delete this record')">
                                <asp:LinkButton ID="btnDelete" Text="DELETE" runat="server" CommandName="Delete" />
                            </span>
                        </ItemTemplate>
                        <EditItemTemplate>
                            <asp:LinkButton ID="btnUpdate" Text="UPDATE" runat="server" CommandName="Update" />
                            <br />
                            <asp:LinkButton ID="btnCancel" Text="CANCEL" runat="server" CommandName="Cancel" />
                        </EditItemTemplate>
                    </asp:TemplateField>
                </Columns>
            </asp:GridView>
    </ContentTemplate>
    <Triggers>
        <asp:AsyncPostBackTrigger ControlID="gvCompetition" EventName="PageIndexChanging" />
        <asp:AsyncPostBackTrigger ControlID="gvCompetition" EventName="RowEditing" />
        <asp:AsyncPostBackTrigger ControlID="gvCompetition" EventName="RowUpdating" />
        <asp:AsyncPostBackTrigger ControlID="gvCompetition" EventName="RowCancelingEdit" />
    </Triggers>
</asp:UpdatePanel>

我做错了什么导致更新不会发生?为什么当它不更新时我没有收到任何错误?

【问题讨论】:

  • 旁注:您应该为您的存储过程使用sp_ 前缀。微软有reserved that prefix for its own use (see Naming Stored Procedures),你确实会在未来某个时候冒着名称冲突的风险。 It's also bad for your stored procedure performance。最好只是简单地避免sp_ 并使用其他东西作为前缀 - 或者根本没有前缀!
  • 另外,我发现那些“全能”存储过程——虽然很诱人——到头来却非常危险。您只有一个凌乱的程序,每次发生任何变化时都需要对其进行更改....为什么不只使用 四个 单独的集中程序 - 一个到SELECT,一个到INSERT,一个到UPDATE,最后一个到DELETE(如果需要的话)。想想单一职责原则 - 每段代码都应该做好一件事,并且只做一件事。现在,您传入太多参数只是为了删除一些东西......
  • 好的,我分离了我的存储过程,但更新仍然无法在 Gridview 上运行。我的存储过程现在称为 CompDev_Update,我所做的只是改变了这个 ALTER PROCEDURE [dbo].[CompDev_Update](@CompID int,我的更新查询仍然是一样的。我在这里做错了什么?

标签: c# asp.net sql-server gridview stored-procedures


【解决方案1】:

存储过程:

ALTER PROCEDURE [dbo].[CompDev_Select]
AS
    BEGIN
        SET NOCOUNT ON;

        SELECT  [WC].[CompID]
              , [WC].[NewDevCount]
              , [WC].[DevelopmentName]
              , [WC].[City]
              , [WC].[State]
              , [WC].[ZipCodeofNewDev]
              , [WC].[ProjectStatus]
              , [WC].[ShoppingCenter]
              , [WC].[ProjectStartDate]
              , [WC].[ProjectDescription]
              , [WC].[ProposedAnchorTenants]
              , [WC].[GLA]
              , [WC].[EstCompDate]
              , [WC].[Developer]
              , [WC].[BusinessUnit]
              , [WC].[BU]
              , [WC].[CenterName]
              , [WC].[MSA]
              , [WC].[BrixmorMSARank]
              , [WC].[Count]
              , [WC].[Region]
              , [WC].[DistancefromNewDev]
        FROM    [dbo].[WestCompetition] AS WC

        SET NOCOUNT OFF;
    END
GO



ALTER PROCEDURE [dbo].[CompDev_Update]
    ( @CompID INT
    , @NewDevCount NCHAR(10) = NULL
    , @DevelopmentName NVARCHAR(255) = NULL
    , @City NVARCHAR(255) = NULL
    , @State NVARCHAR(255) = NULL
    , @ZipCodeofNewDev NCHAR(10) = NULL
    , @ProjectStatus NVARCHAR(255) = NULL
    , @ShoppingCenter NVARCHAR(255) = NULL
    , @ProjectStartDate FLOAT = NULL
    , @ProjectDescription NVARCHAR(255) = NULL
    , @ProposedAnchorTenants NVARCHAR(255) = NULL
    , @GLA NCHAR(10) = NULL
    , @EstCompDate FLOAT = NULL
    , @Developer NVARCHAR(255) = NULL
    , @BusinessUnit NCHAR(10) = NULL
    , @BU NCHAR(10) = NULL
    , @CenterName NVARCHAR(255) = NULL
    , @MSA NVARCHAR(255) = NULL
    , @BrixmorMSARank NCHAR(10) = NULL
    , @Count NCHAR(10) = NULL
    , @Region NVARCHAR(255) = NULL
    , @DistancefromNewDev NCHAR(10) = NULL )
AS
    BEGIN
        SET NOCOUNT ON;

        UPDATE  WC
        SET     NewDevCount = @NewDevCount
              , DevelopmentName = @DevelopmentName
              , City = @City
              , [State] = @State
              , ZipCodeofNewDev = @ZipCodeofNewDev
              , ProjectStatus = @ProjectStatus
              , ShoppingCenter = @ShoppingCenter
              , ProjectStartDate = @ProjectStartDate
              , ProjectDescription = @ProjectDescription
              , ProposedAnchorTenants = @ProposedAnchorTenants
              , GLA = @GLA
              , EstCompDate = @EstCompDate
              , Developer = @Developer
              , BusinessUnit = @BusinessUnit
              , BU = @BU
              , CenterName = @CenterName
              , MSA = @MSA
              , BrixmorMSARank = @BrixmorMSARank
              , [Count] = @Count
              , Region = @Region
              , DistancefromNewDev = @DistancefromNewDev
        FROM    [dbo].[WestCompetition] AS WC
        WHERE   ( [WC].CompID = @CompID );

        SET NOCOUNT OFF;
    END
GO


ALTER PROCEDURE [dbo].[CompDev_Insert]
    ( @NewDevCount NCHAR(10) = NULL
    , @DevelopmentName NVARCHAR(255) = NULL
    , @City NVARCHAR(255) = NULL
    , @State NVARCHAR(255) = NULL
    , @ZipCodeofNewDev NCHAR(10) = NULL
    , @ProjectStatus NVARCHAR(255) = NULL
    , @ShoppingCenter NVARCHAR(255) = NULL
    , @ProjectStartDate FLOAT = NULL
    , @ProjectDescription NVARCHAR(255) = NULL
    , @ProposedAnchorTenants NVARCHAR(255) = NULL
    , @GLA NCHAR(10) = NULL
    , @EstCompDate FLOAT = NULL
    , @Developer NVARCHAR(255) = NULL
    , @BusinessUnit NCHAR(10) = NULL
    , @BU NCHAR(10) = NULL
    , @CenterName NVARCHAR(255) = NULL
    , @MSA NVARCHAR(255) = NULL
    , @BrixmorMSARank NCHAR(10) = NULL
    , @Count NCHAR(10) = NULL
    , @Region NVARCHAR(255) = NULL
    , @DistancefromNewDev NCHAR(10) = NULL )
AS
    INSERT  INTO [dbo].[WestCompetition]
            ( [NewDevCount]
            , [DevelopmentName]
            , [City]
            , [State]
            , [ZipCodeofNewDev]
            , [ProjectStatus]
            , [ShoppingCenter]
            , [ProjectStartDate]
            , [ProjectDescription]
            , [ProposedAnchorTenants]
            , [GLA]
            , [EstCompDate]
            , [Developer]
            , [BusinessUnit]
            , [BU]
            , [CenterName]
            , [MSA]
            , [BrixmorMSARank]
            , [Count]
            , [Region]
            , [DistancefromNewDev] )
    VALUES  ( @NewDevCount
            , @DevelopmentName
            , @City
            , @State
            , @ZipCodeofNewDev
            , @ProjectStatus
            , @ShoppingCenter
            , @ProjectStartDate
            , @ProjectDescription
            , @ProposedAnchorTenants
            , @GLA
            , @EstCompDate
            , @Developer
            , @BusinessUnit
            , @BU
            , @CenterName
            , @MSA
            , @BrixmorMSARank
            , @Count
            , @Region
            , @DistancefromNewDev );
GO


ALTER PROCEDURE [dbo].[CompDev_Delete] ( @CompID INT )
AS
    BEGIN
        SET NOCOUNT ON;

        DELETE  WC
        FROM    [dbo].[WestCompetition] AS WC
        WHERE   [WC].[CompID] = @CompID

        SET NOCOUNT OFF;
    END
GO

前端代码:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
        <asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>
        <div>
            <asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
                <ContentTemplate>
                    <asp:ListView ID="ListView1" runat="server" DataKeyNames="CompID" DataSourceID="SqlDataSource1" InsertItemPosition="LastItem">
                        <ItemTemplate>
                            <tr style="background-color: rgba(246, 129, 33, 1); border: 1px solid rgba(153, 153, 153, 1);">
                                <td><asp:Button ID="EditButton" runat="server" CommandName="Edit" Text="Edit" /></td>
                                <td><asp:Button ID="DeleteButton" runat="server" CommandName="Delete" Text="Delete" /></td>
                                <td><asp:Label ID="CompIDLabel" runat="server" Text='<%# Eval("CompID") %>' /></td>
                                <td><asp:Label ID="NewDevCountLabel" runat="server" Text='<%# Eval("NewDevCount") %>' /></td>
                                <td><asp:Label ID="DevelopmentNameLabel" runat="server" Text='<%# Eval("DevelopmentName") %>' /></td>
                                <td><asp:Label ID="CityLabel" runat="server" Text='<%# Eval("City") %>' /></td>
                                <td><asp:Label ID="StateLabel" runat="server" Text='<%# Eval("State") %>' /></td>
                                <td><asp:Label ID="ZipCodeofNewDevLabel" runat="server" Text='<%# Eval("ZipCodeofNewDev") %>' /></td>
                                <td><asp:Label ID="ProjectStatusLabel" runat="server" Text='<%# Eval("ProjectStatus") %>' /></td>
                                <td><asp:Label ID="ShoppingCenterLabel" runat="server" Text='<%# Eval("ShoppingCenter") %>' /></td>
                                <td><asp:Label ID="ProjectStartDateLabel" runat="server" Text='<%# Eval("ProjectStartDate") %>' /></td>
                                <td><asp:Label ID="ProjectDescriptionLabel" runat="server" Text='<%# Eval("ProjectDescription") %>' /></td>
                                <td><asp:Label ID="ProposedAnchorTenantsLabel" runat="server" Text='<%# Eval("ProposedAnchorTenants") %>' /></td>
                                <td><asp:Label ID="GLALabel" runat="server" Text='<%# Eval("GLA") %>' /></td>
                                <td><asp:Label ID="EstCompDateLabel" runat="server" Text='<%# Eval("EstCompDate") %>' /></td>
                                <td><asp:Label ID="DeveloperLabel" runat="server" Text='<%# Eval("Developer") %>' /></td>
                                <td><asp:Label ID="BusinessUnitLabel" runat="server" Text='<%# Eval("BusinessUnit") %>' /></td>
                                <td><asp:Label ID="BULabel" runat="server" Text='<%# Eval("BU") %>' /></td>
                                <td><asp:Label ID="CenterNameLabel" runat="server" Text='<%# Eval("CenterName") %>' /></td>
                                <td><asp:Label ID="MSALabel" runat="server" Text='<%# Eval("MSA") %>' /></td>
                                <td><asp:Label ID="BrixmorMSARankLabel" runat="server" Text='<%# Eval("BrixmorMSARank") %>' /></td>
                                <td><asp:Label ID="CountLabel" runat="server" Text='<%# Eval("Count") %>' /></td>
                                <td><asp:Label ID="RegionLabel" runat="server" Text='<%# Eval("Region") %>' /></td>
                                <td><asp:Label ID="DistancefromNewDevLabel" runat="server" Text='<%# Eval("DistancefromNewDev") %>' /></td>
                            </tr>
                        </ItemTemplate>
                        <AlternatingItemTemplate>
                            <tr style="background-color: rgba(255, 255, 255, 1);">
                                <td><asp:Button ID="EditButton" runat="server" CommandName="Edit" Text="Edit" /></td>
                                <td><asp:Button ID="DeleteButton" runat="server" CommandName="Delete" Text="Delete" /></td>
                                <td><asp:Label ID="CompIDLabel" runat="server" Text='<%# Eval("CompID") %>' /></td>
                                <td><asp:Label ID="NewDevCountLabel" runat="server" Text='<%# Eval("NewDevCount") %>' /></td>
                                <td><asp:Label ID="DevelopmentNameLabel" runat="server" Text='<%# Eval("DevelopmentName") %>' /></td>
                                <td><asp:Label ID="CityLabel" runat="server" Text='<%# Eval("City") %>' /></td>
                                <td><asp:Label ID="StateLabel" runat="server" Text='<%# Eval("State") %>' /></td>
                                <td><asp:Label ID="ZipCodeofNewDevLabel" runat="server" Text='<%# Eval("ZipCodeofNewDev") %>' /></td>
                                <td><asp:Label ID="ProjectStatusLabel" runat="server" Text='<%# Eval("ProjectStatus") %>' /></td>
                                <td><asp:Label ID="ShoppingCenterLabel" runat="server" Text='<%# Eval("ShoppingCenter") %>' /></td>
                                <td><asp:Label ID="ProjectStartDateLabel" runat="server" Text='<%# Eval("ProjectStartDate") %>' /></td>
                                <td><asp:Label ID="ProjectDescriptionLabel" runat="server" Text='<%# Eval("ProjectDescription") %>' /></td>
                                <td><asp:Label ID="ProposedAnchorTenantsLabel" runat="server" Text='<%# Eval("ProposedAnchorTenants") %>' /></td>
                                <td><asp:Label ID="GLALabel" runat="server" Text='<%# Eval("GLA") %>' /></td>
                                <td><asp:Label ID="EstCompDateLabel" runat="server" Text='<%# Eval("EstCompDate") %>' /></td>
                                <td><asp:Label ID="DeveloperLabel" runat="server" Text='<%# Eval("Developer") %>' /></td>
                                <td><asp:Label ID="BusinessUnitLabel" runat="server" Text='<%# Eval("BusinessUnit") %>' /></td>
                                <td><asp:Label ID="BULabel" runat="server" Text='<%# Eval("BU") %>' /></td>
                                <td><asp:Label ID="CenterNameLabel" runat="server" Text='<%# Eval("CenterName") %>' /></td>
                                <td><asp:Label ID="MSALabel" runat="server" Text='<%# Eval("MSA") %>' /></td>
                                <td><asp:Label ID="BrixmorMSARankLabel" runat="server" Text='<%# Eval("BrixmorMSARank") %>' /></td>
                                <td><asp:Label ID="CountLabel" runat="server" Text='<%# Eval("Count") %>' /></td>
                                <td><asp:Label ID="RegionLabel" runat="server" Text='<%# Eval("Region") %>' /></td>
                                <td><asp:Label ID="DistancefromNewDevLabel" runat="server" Text='<%# Eval("DistancefromNewDev") %>' /></td>
                            </tr>
                        </AlternatingItemTemplate>
                        <EditItemTemplate>
                            <tr>
                                <td><asp:Button ID="UpdateButton" runat="server" CommandName="Update" Text="Update" /></td>
                                <td><asp:Button ID="CancelButton" runat="server" CommandName="Cancel" Text="Cancel" /></td>
                                <td><asp:Label ID="CompIDLabel1" runat="server" Text='<%# Eval("CompID") %>' /></td>
                                <td><asp:TextBox ID="NewDevCountTextBox" runat="server" Text='<%# Bind("NewDevCount") %>' /></td>
                                <td><asp:TextBox ID="DevelopmentNameTextBox" runat="server" Text='<%# Bind("DevelopmentName") %>' /></td>
                                <td><asp:TextBox ID="CityTextBox" runat="server" Text='<%# Bind("City") %>' /></td>
                                <td><asp:TextBox ID="StateTextBox" runat="server" Text='<%# Bind("State") %>' /></td>
                                <td><asp:TextBox ID="ZipCodeofNewDevTextBox" runat="server" Text='<%# Bind("ZipCodeofNewDev") %>' /></td>
                                <td><asp:TextBox ID="ProjectStatusTextBox" runat="server" Text='<%# Bind("ProjectStatus") %>' /></td>
                                <td><asp:TextBox ID="ShoppingCenterTextBox" runat="server" Text='<%# Bind("ShoppingCenter") %>' /></td>
                                <td><asp:TextBox ID="ProjectStartDateTextBox" runat="server" Text='<%# Bind("ProjectStartDate") %>' /></td>
                                <td><asp:TextBox ID="ProjectDescriptionTextBox" runat="server" Text='<%# Bind("ProjectDescription") %>' /></td>
                                <td><asp:TextBox ID="ProposedAnchorTenantsTextBox" runat="server" Text='<%# Bind("ProposedAnchorTenants") %>' /></td>
                                <td><asp:TextBox ID="GLATextBox" runat="server" Text='<%# Bind("GLA") %>' /></td>
                                <td><asp:TextBox ID="EstCompDateTextBox" runat="server" Text='<%# Bind("EstCompDate") %>' /></td>
                                <td><asp:TextBox ID="DeveloperTextBox" runat="server" Text='<%# Bind("Developer") %>' /></td>
                                <td><asp:TextBox ID="BusinessUnitTextBox" runat="server" Text='<%# Bind("BusinessUnit") %>' /></td>
                                <td><asp:TextBox ID="BUTextBox" runat="server" Text='<%# Bind("BU") %>' /></td>
                                <td><asp:TextBox ID="CenterNameTextBox" runat="server" Text='<%# Bind("CenterName") %>' /></td>
                                <td><asp:TextBox ID="MSATextBox" runat="server" Text='<%# Bind("MSA") %>' /></td>
                                <td><asp:TextBox ID="BrixmorMSARankTextBox" runat="server" Text='<%# Bind("BrixmorMSARank") %>' /></td>
                                <td><asp:TextBox ID="CountTextBox" runat="server" Text='<%# Bind("Count") %>' /></td>
                                <td><asp:TextBox ID="RegionTextBox" runat="server" Text='<%# Bind("Region") %>' /></td>
                                <td><asp:TextBox ID="DistancefromNewDevTextBox" runat="server" Text='<%# Bind("DistancefromNewDev") %>' /></td>
                            </tr>
                        </EditItemTemplate>
                        <EmptyDataTemplate>
                            <table runat="server" style="">
                                <tr>
                                    <td>No data was returned.</td>
                                </tr>
                            </table>
                        </EmptyDataTemplate>
                        <InsertItemTemplate>
                            <tr style="">
                                <td><asp:Button ID="InsertButton" runat="server" CommandName="Insert" Text="Insert" /></td>
                                <td><asp:Button ID="CancelButton" runat="server" CommandName="Cancel" Text="Clear" /></td>
                                <td>&nbsp;</td>
                                <td><asp:TextBox ID="NewDevCountTextBox" runat="server" Text='<%# Bind("NewDevCount") %>' /></td>
                                <td><asp:TextBox ID="DevelopmentNameTextBox" runat="server" Text='<%# Bind("DevelopmentName") %>' /></td>
                                <td><asp:TextBox ID="CityTextBox" runat="server" Text='<%# Bind("City") %>' /></td>
                                <td><asp:TextBox ID="StateTextBox" runat="server" Text='<%# Bind("State") %>' /></td>
                                <td><asp:TextBox ID="ZipCodeofNewDevTextBox" runat="server" Text='<%# Bind("ZipCodeofNewDev") %>' /></td>
                                <td><asp:TextBox ID="ProjectStatusTextBox" runat="server" Text='<%# Bind("ProjectStatus") %>' /></td>
                                <td><asp:TextBox ID="ShoppingCenterTextBox" runat="server" Text='<%# Bind("ShoppingCenter") %>' /></td>
                                <td><asp:TextBox ID="ProjectStartDateTextBox" runat="server" Text='<%# Bind("ProjectStartDate") %>' /></td>
                                <td><asp:TextBox ID="ProjectDescriptionTextBox" runat="server" Text='<%# Bind("ProjectDescription") %>' /></td>
                                <td><asp:TextBox ID="ProposedAnchorTenantsTextBox" runat="server" Text='<%# Bind("ProposedAnchorTenants") %>' /></td>
                                <td><asp:TextBox ID="GLATextBox" runat="server" Text='<%# Bind("GLA") %>' /></td>
                                <td><asp:TextBox ID="EstCompDateTextBox" runat="server" Text='<%# Bind("EstCompDate") %>' /></td>
                                <td><asp:TextBox ID="DeveloperTextBox" runat="server" Text='<%# Bind("Developer") %>' /></td>
                                <td><asp:TextBox ID="BusinessUnitTextBox" runat="server" Text='<%# Bind("BusinessUnit") %>' /></td>
                                <td><asp:TextBox ID="BUTextBox" runat="server" Text='<%# Bind("BU") %>' /></td>
                                <td><asp:TextBox ID="CenterNameTextBox" runat="server" Text='<%# Bind("CenterName") %>' /></td>
                                <td><asp:TextBox ID="MSATextBox" runat="server" Text='<%# Bind("MSA") %>' /></td>
                                <td><asp:TextBox ID="BrixmorMSARankTextBox" runat="server" Text='<%# Bind("BrixmorMSARank") %>' /></td>
                                <td><asp:TextBox ID="CountTextBox" runat="server" Text='<%# Bind("Count") %>' /></td>
                                <td><asp:TextBox ID="RegionTextBox" runat="server" Text='<%# Bind("Region") %>' /></td>
                                <td><asp:TextBox ID="DistancefromNewDevTextBox" runat="server" Text='<%# Bind("DistancefromNewDev") %>' /></td>
                            </tr>
                        </InsertItemTemplate>
                        <LayoutTemplate>
                            <table runat="server">
                                <tr runat="server">
                                    <td runat="server">
                                        <table id="itemPlaceholderContainer" runat="server" border="0" style="">
                                            <tr runat="server" style="background-color: rgba(122, 21, 1, 1); font-weight: bold; color: rgba(255, 255, 255, 1);">
                                                <th runat="server"></th>
                                                <th runat="server"></th>
                                                <th runat="server"><asp:LinkButton runat="server" ID="LinkButton1" style="color: rgba(255, 255, 255, 1);" Text="CompID" CommandName="Sort" CommandArgument="CompID" /></th>
                                                <th runat="server"><asp:LinkButton runat="server" ID="LinkButton2" style="color: rgba(255, 255, 255, 1);" Text="NewDevCount" CommandName="Sort" CommandArgument="NewDevCount" /></th>
                                                <th runat="server"><asp:LinkButton runat="server" ID="LinkButton3" style="color: rgba(255, 255, 255, 1);" Text="DevelopmentName" CommandName="Sort" CommandArgument="DevelopmentName" /></th>
                                                <th runat="server"><asp:LinkButton runat="server" ID="LinkButton4" style="color: rgba(255, 255, 255, 1);" Text="City" CommandName="Sort" CommandArgument="City" /></th>
                                                <th runat="server"><asp:LinkButton runat="server" ID="LinkButton5" style="color: rgba(255, 255, 255, 1);" Text="State" CommandName="Sort" CommandArgument="State" /></th>
                                                <th runat="server"><asp:LinkButton runat="server" ID="LinkButton6" style="color: rgba(255, 255, 255, 1);" Text="ZipCodeofNewDev" CommandName="Sort" CommandArgument="ZipCodeofNewDev" /></th>
                                                <th runat="server"><asp:LinkButton runat="server" ID="LinkButton7" style="color: rgba(255, 255, 255, 1);" Text="ProjectStatus" CommandName="Sort" CommandArgument="ProjectStatus" /></th>
                                                <th runat="server"><asp:LinkButton runat="server" ID="LinkButton8" style="color: rgba(255, 255, 255, 1);" Text="ShoppingCenter" CommandName="Sort" CommandArgument="ShoppingCenter" /></th>
                                                <th runat="server"><asp:LinkButton runat="server" ID="LinkButton9" style="color: rgba(255, 255, 255, 1);" Text="ProjectStartDate" CommandName="Sort" CommandArgument="ProjectStartDate" /></th>
                                                <th runat="server"><asp:LinkButton runat="server" ID="LinkButton10" style="color: rgba(255, 255, 255, 1);" Text="ProjectDescription" CommandName="Sort" CommandArgument="ProjectDescription" /></th>
                                                <th runat="server"><asp:LinkButton runat="server" ID="LinkButton11" style="color: rgba(255, 255, 255, 1);" Text="ProposedAnchorTenants" CommandName="Sort" CommandArgument="ProposedAnchorTenants" /></th>
                                                <th runat="server"><asp:LinkButton runat="server" ID="LinkButton12" style="color: rgba(255, 255, 255, 1);" Text="GLA" CommandName="Sort" CommandArgument="GLA" /></th>
                                                <th runat="server"><asp:LinkButton runat="server" ID="LinkButton13" style="color: rgba(255, 255, 255, 1);" Text="EstCompDate" CommandName="Sort" CommandArgument="EstCompDate" /></th>
                                                <th runat="server"><asp:LinkButton runat="server" ID="LinkButton14" style="color: rgba(255, 255, 255, 1);" Text="Developer" CommandName="Sort" CommandArgument="Developer" /></th>
                                                <th runat="server"><asp:LinkButton runat="server" ID="LinkButton15" style="color: rgba(255, 255, 255, 1);" Text="BusinessUnit" CommandName="Sort" CommandArgument="BusinessUnit" /></th>
                                                <th runat="server"><asp:LinkButton runat="server" ID="LinkButton16" style="color: rgba(255, 255, 255, 1);" Text="BU" CommandName="Sort" CommandArgument="BU" /></th>
                                                <th runat="server"><asp:LinkButton runat="server" ID="LinkButton17" style="color: rgba(255, 255, 255, 1);" Text="CenterName" CommandName="Sort" CommandArgument="CenterName" /></th>
                                                <th runat="server"><asp:LinkButton runat="server" ID="LinkButton18" style="color: rgba(255, 255, 255, 1);" Text="MSA" CommandName="Sort" CommandArgument="MSA" /></th>
                                                <th runat="server"><asp:LinkButton runat="server" ID="LinkButton19" style="color: rgba(255, 255, 255, 1);" Text="BrixmorMSARank" CommandName="Sort" CommandArgument="BrixmorMSARank" /></th>
                                                <th runat="server"><asp:LinkButton runat="server" ID="LinkButton20" style="color: rgba(255, 255, 255, 1);" Text="Count" CommandName="Sort" CommandArgument="Count" /></th>
                                                <th runat="server"><asp:LinkButton runat="server" ID="LinkButton21" style="color: rgba(255, 255, 255, 1);" Text="Region" CommandName="Sort" CommandArgument="Region" /></th>
                                                <th runat="server"><asp:LinkButton runat="server" ID="LinkButton22" style="color: rgba(255, 255, 255, 1);" Text="DistancefromNewDev" CommandName="Sort" CommandArgument="DistancefromNewDev" /></th>
                                            </tr>
                                            <tr id="itemPlaceholder" runat="server">
                                            </tr>
                                        </table>
                                    </td>
                                </tr>
                                <tr runat="server" style="background-color: rgba(237, 45, 34, 1); color: rgba(0, 0, 0, 1); text-align: left;">
                                    <td runat="server">
                                        <asp:DataPager ID="DataPager1" runat="server">
                                            <Fields>
                                                <asp:NextPreviousPagerField ButtonType="Button" ShowFirstPageButton="True" ShowLastPageButton="True" />
                                            </Fields>
                                        </asp:DataPager>
                                    </td>
                                </tr>
                            </table>
                        </LayoutTemplate>                        
                    </asp:ListView>
                    <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:CnnStr %>" DeleteCommand="CompDev_Delete" DeleteCommandType="StoredProcedure" InsertCommand="CompDev_Insert" InsertCommandType="StoredProcedure" SelectCommand="CompDev_Select" SelectCommandType="StoredProcedure" UpdateCommand="CompDev_Update" UpdateCommandType="StoredProcedure">
                        <DeleteParameters>
                            <asp:Parameter Name="CompID" Type="Int32" />
                        </DeleteParameters>
                        <InsertParameters>
                            <asp:Parameter Name="NewDevCount" Type="String" />
                            <asp:Parameter Name="DevelopmentName" Type="String" />
                            <asp:Parameter Name="City" Type="String" />
                            <asp:Parameter Name="State" Type="String" />
                            <asp:Parameter Name="ZipCodeofNewDev" Type="String" />
                            <asp:Parameter Name="ProjectStatus" Type="String" />
                            <asp:Parameter Name="ShoppingCenter" Type="String" />
                            <asp:Parameter Name="ProjectStartDate" Type="Double" />
                            <asp:Parameter Name="ProjectDescription" Type="String" />
                            <asp:Parameter Name="ProposedAnchorTenants" Type="String" />
                            <asp:Parameter Name="GLA" Type="String" />
                            <asp:Parameter Name="EstCompDate" Type="Double" />
                            <asp:Parameter Name="Developer" Type="String" />
                            <asp:Parameter Name="BusinessUnit" Type="String" />
                            <asp:Parameter Name="BU" Type="String" />
                            <asp:Parameter Name="CenterName" Type="String" />
                            <asp:Parameter Name="MSA" Type="String" />
                            <asp:Parameter Name="BrixmorMSARank" Type="String" />
                            <asp:Parameter Name="Count" Type="String" />
                            <asp:Parameter Name="Region" Type="String" />
                            <asp:Parameter Name="DistancefromNewDev" Type="String" />
                        </InsertParameters>
                        <UpdateParameters>
                            <asp:Parameter Name="CompID" Type="Int32" />
                            <asp:Parameter Name="NewDevCount" Type="String" />
                            <asp:Parameter Name="DevelopmentName" Type="String" />
                            <asp:Parameter Name="City" Type="String" />
                            <asp:Parameter Name="State" Type="String" />
                            <asp:Parameter Name="ZipCodeofNewDev" Type="String" />
                            <asp:Parameter Name="ProjectStatus" Type="String" />
                            <asp:Parameter Name="ShoppingCenter" Type="String" />
                            <asp:Parameter Name="ProjectStartDate" Type="Double" />
                            <asp:Parameter Name="ProjectDescription" Type="String" />
                            <asp:Parameter Name="ProposedAnchorTenants" Type="String" />
                            <asp:Parameter Name="GLA" Type="String" />
                            <asp:Parameter Name="EstCompDate" Type="Double" />
                            <asp:Parameter Name="Developer" Type="String" />
                            <asp:Parameter Name="BusinessUnit" Type="String" />
                            <asp:Parameter Name="BU" Type="String" />
                            <asp:Parameter Name="CenterName" Type="String" />
                            <asp:Parameter Name="MSA" Type="String" />
                            <asp:Parameter Name="BrixmorMSARank" Type="String" />
                            <asp:Parameter Name="Count" Type="String" />
                            <asp:Parameter Name="Region" Type="String" />
                            <asp:Parameter Name="DistancefromNewDev" Type="String" />
                        </UpdateParameters>
                    </asp:SqlDataSource>
                </ContentTemplate>
            </asp:UpdatePanel>
        </div>
    </form>
</body>
</html>

所以 - 我做了什么: 我设置了一个简单的列表视图,连接到 web.config 中的连接字符串。 listview 有一个连接到该连接字符串的 SQL 数据源,它使用上面的存储过程进行数据 CRUD 操作。我什至添加了你的样式,所以 LV 看起来像你的 GV。

如果你不接受这个作为你的答案,我可以接受,因为我没有从技术上解决你的 gridview 问题,而是替换它们。也就是说,使用此解决方案将使您的工作顺利进行。 :)

【讨论】:

  • 感谢 PKD。这正是我想做的事情。 Gridview 肯定有一些问题,但 ListView 似乎是我在这里尝试做的更好的解决方案。再次感谢。
  • ListViews 是很棒的东西。 GridView 有它的位置,但我发现数据编辑在 ListView 中效果更好。对自定义编码等的要求较低。您还可以很容易地在列表视图中添加 AJAX 验证器和 ASP 验证器。很高兴我能帮上忙!
【解决方案2】:

您传递了Status=Update,这会强制您的存储过程运行 SP 的更新部分,但随后您调用应该选择记录以填充数据集的 SqlDataAdapter.Fill 方法,但您的过程执行更新e 不返回任何记录。

如果你真的想执行这个非常不直观且(在我看来)很弱的代码,你需要在存储过程的末尾移动选择部分并在每种情况下都执行它。

IF(@Status = 'Add')
BEGIN
   ....
END
ELSE IF(@Status = 'Update')
BEGIN
   ....
END
ELSE IF(@Status = 'Delete')
BEGIN
   ....
END
-- Always return the records after the update/insert/delete 
SELECT * FROM WestCompetition 

不过marc_s上面的评论已经说明了一切,没什么好补充的

【讨论】:

  • 我将更新分离到一个新的存储过程并摆脱了状态。请看上面我的编辑。我做错了什么数据不会更新?
【解决方案3】:

注意到您实际上是在推动 Status 值。它可能无法运行的原因有几个: 1.您调用参数的顺序与在存储过程中定义它们的顺序不同。在 C# 代码中最后传递状态。 (事实上​​,仔细检查所有参数以确保它们与 proc 的顺序相同) 2.“状态”的情况在您的存储过程与您的 C# 代码中是不同的。确保 C# 代码中的所有输入参数与 proc 中的参数相同。

最初,最好的办法是重新编写你的 proc 来做 1 件事并把它做好。一旦成功,您可以重新工具 proc 来做更多事情。不过,根据 MarcS,您确实应该避免使用多用途 proc,因为维护和保养它们是一种痛苦。

【讨论】:

  • 是的 - 当我将所有代码收集到我的编辑器中时就看到了。对于初学者,请尝试重新组织 C# 中的参数以匹配 Proc 中的顺序。然后还要确保两者的案例相同。 (“@status”与“@Status”)。
  • 我将更新分离到一个新的存储过程并摆脱了状态。请看上面我的编辑。我做错了什么数据不会更新?
  • 这个过程中有几件事我最初并不理解。您正在使用浮点数来存储日期。您正在为其他所有内容使用 unicode 存储。您正在使用 nchar(10) 来存储应该是 int (“计数”)的内容。一些建议:将日期存储为 DateTime 而不是 Float。删除所有这些 un​​icode 数据类型,除非您真正使用的是 unicode 数据(用 char 替换 nchar,用 varchar 替换 nvarchar)。
  • 除此之外,运行 SQL Profiler,从代码中查看运行 SQL 语句的调用。从 Profiler 复制该调用,并在 SQL 中使用它来查看确切的错误是什么。检查以确保您有效地传递了 CompID。在 Debug 中单步执行您的代码,以确保您的所有数据类型都正确传递。你能告诉我们你看到了什么错误吗? (如果有)
  • 我现在正在使用您的确切代码设置一个微型项目,以测试它并为您提供答案。
猜你喜欢
  • 2016-10-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多