ASP DataGrid - 必须声明标量变量“@LCompanyIDInt”

ASP DataGrid - Must declare the scalar variable "@LCompanyIDInt"

我有一个正在处理的应用程序,它在面板上有多个网格视图,并且这些面板是通过下拉列表选择的。我放在这里的第一个效果很好。

我有第二个网格设置与第一个完全相同(我认为)。我稍微更改了变量名,并为内容添加了一些额外的行,但其他方面都是相同的。

在第二个网格上,我收到一个错误,指出我的第一个变量 (LCompanyIDInt) 未声明。我不知道为什么这么说。

我在下面粘贴了工作代码和非工作代码。由于 space 原因删除了很多列,但它总是在第二个网格上的 LCompanyIDInt 问题上炸弹,用于插入或更新。重置或取消都可以。

工作代码:

    <!-- Total Points Annuity -->       
        <asp:Panel ID="TPAnnuity_Panel" runat="server" visible="true">  
                <asp:GridView ID="TPAnnuity_GridView" AllowSorting="true" AllowPaging="true" Runat="server"
                    DataSourceID="TPAnnuity_SqlDataSource" DataKeyNames="AnnuityTotalPointsID" 
                    AutoGenerateColumns="False" ShowFooter="true" PageSize="20">
                    <Columns>               
                        <asp:TemplateField HeaderText="ID" visible="False" InsertVisible="False" SortExpression="AnnuityTotalPointsID" HeaderStyle-VerticalAlign="Bottom">
                            <ItemTemplate>
                                <asp:Label ID="Label0" runat="server" Text='<%# Bind("AnnuityTotalPointsID") %>'></asp:Label>
                            </ItemTemplate>
                            <EditItemTemplate>
                                <asp:Label ID="EditAAnnuityTotalPointsID" runat="server" Text='<%# Bind("AnnuityTotalPointsID") %>'></asp:Label>
                            </EditItemTemplate>
                            <ItemStyle HorizontalAlign="Center" />
                        </asp:TemplateField>

                        <asp:TemplateField HeaderText="Company" SortExpression="CompanyName" HeaderStyle-VerticalAlign="Bottom">
                            <ItemTemplate>
                                <asp:Label ID="Label11" runat="server" Text='<%# Bind("CompanyName") %>'></asp:Label>
                            </ItemTemplate>
                            <EditItemTemplate>
                                <asp:DropDownList ID="EditACompanyID" runat="server" DataSource="<%# ddlCompanyDS %>" DataValueField="CompanyID" DataTextField="CompanyName" selectedValue='<%# Bind("CompanyID") %>'></asp:DropDownList>
                            </EditItemTemplate>
                            <FooterTemplate>
                                <asp:DropDownList ID="NewCompanyID" runat="server" DataSource="<%# ddlCompanyDS %>" DataValueField="CompanyID" DataTextField="CompanyName"></asp:DropDownList>
                                <asp:RequiredFieldValidator ID="RequiredFieldValidator11" runat="server" ControlToValidate="NewCompanyID" Display="Dynamic"  ForeColor="" ErrorMessage="You must enter a value. *" Enabled="false"></asp:RequiredFieldValidator>
                            </FooterTemplate>
                            <FooterStyle Wrap="False" />
                        </asp:TemplateField>    

                        <etc I ran out of room> 

                       <asp:TemplateField ShowHeader="False">
                        <ItemTemplate>
                            <asp:LinkButton ID="lbEdit" runat="server" CausesValidation="False" CommandName="Edit" Text="Edit" ></asp:LinkButton>
                        </ItemTemplate>
                        <EditItemTemplate>
                            <asp:LinkButton ID="lbUpdate" runat="server" CausesValidation="False" CommandName="Update" Text="Update" ></asp:LinkButton>
                            <asp:LinkButton ID="lbCancel" runat="server" CausesValidation="False" CommandName="Cancel" Text="Cancel"></asp:LinkButton>
                        </EditItemTemplate>
                        <FooterTemplate>
                            <asp:LinkButton ID="lbInsert" runat="server" CausesValidation="True" CommandName="Insert" Text="Insert" ></asp:LinkButton>
                            <asp:LinkButton ID="LinkButton2" runat="server" CausesValidation="False" CommandName="Cancel" Text="Reset"></asp:LinkButton>
                        </FooterTemplate>
                    </asp:TemplateField>

                    </Columns>
                </asp:GridView>

                <asp:SqlDataSource ID="TPAnnuity_SqlDataSource" Runat="server"
                    SelectCommand="SELECT * FROM tblTotalPointsAnnuity a left outer join tblcompanyinfo ci on a.CompanyID = ci.CompanyID ORDER BY (CASE WHEN CompanyName Is Null then 1 ELSE 0 END), CompanyName, ProductName "
                    InsertCommand="INSERT INTO [tblTotalPointsAnnuity](CompanyID, ProductName, IssueAges, PlanTypeName, AgentFYC, AgentRenewal, ContractPoints, BonusPoints, IncludeInSummary, IncludeInTopPicks, ActiveProduct) VALUES(@CompanyIDInt, @ProductNameText, @IssueAgesText, @PlanTypeNameText, @AgentFYCInt, @AgentRenewalInt, @ContractPointsDec, @BonusPointsInt, @IncludeInSummaryInt, @IncludeInTopPicksInt, @ActiveProductInt) "
                    UpdateCommand="UPDATE [tblTotalPointsAnnuity] Set CompanyID = @CompanyIDInt, ProductName = @ProductNameText, IssueAges = @IssueAgesText, PlanTypeName = @PlanTypeNameText, AgentFYC = @AgentFYCInt, AgentRenewal = @AgentRenewalInt, ContractPoints = @ContractPointsDec, BonusPoints = @BonusPointsInt, IncludeInSummary = @IncludeInSummaryInt, IncludeInTopPicks = @IncludeInTopPicksInt, ActiveProduct = @ActiveProductInt WHERE [AnnuityTotalPointsID] = @AnnuityTotalPointsIDInt">
                    <InsertParameters>
                        <asp:Parameter Name="CompanyIDInt" Type="Int32" />
                    </InsertParameters>
                    <UpdateParameters>
                        <asp:Parameter Name="CompanyIDInt" Type="Int32" />
                    </UpdateParameters>
                </asp:SqlDataSource>
        </asp:Panel>
<!-- END Total Points Annuity -->

背后的工作代码

Sub TPAnnuity_RowCommand(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewCommandEventArgs) Handles TPAnnuity_GridView.RowCommand
    Dim TPAnnuity_searchStr As String = TPAnnuity_search_Text.Text

    If TPAnnuity_searchStr = "" Then
        TPAnnuity_SqlDataSource.SelectCommand = "SELECT * FROM tblTotalPointsAnnuity a " & _
                                        " left outer join tblcompanyinfo ci on a.CompanyID = ci.CompanyID " & _
                                        " ORDER BY (CASE WHEN CompanyName Is Null then 1 ELSE 0 END), CompanyName, ProductName "
    Else
        TPAnnuity_SqlDataSource.SelectCommand = "SELECT * FROM tblTotalPointsAnnuity a " & _
                                        " left outer join tblcompanyinfo ci on a.CompanyID = ci.CompanyID " & _
                                    "WHERE 1=1 "

        If TPAnnuity_search_dropdown.SelectedValue = "Company" Then
            TPAnnuity_SqlDataSource.SelectCommand &= " AND ci.CompanyName like '%" & TPAnnuity_search_Text.Text & "%' OR ci.CompanyCode like '%" & TPAnnuity_search_Text.Text & "%'"
        Else If TPAnnuity_search_dropdown.SelectedValue = "CompanyID" Then
            TPAnnuity_SqlDataSource.SelectCommand &= " AND ci.CompanyID = " & TPAnnuity_search_Text.Text
        Else
            TPAnnuity_SqlDataSource.SelectCommand &= " AND " & TPAnnuity_search_dropdown.SelectedValue & " like '%" & TPAnnuity_search_Text.Text & "%' "
        End If
        TPAnnuity_SqlDataSource.SelectCommand &= " ORDER BY (CASE WHEN CompanyName Is Null then 1 ELSE 0 END), CompanyName, ProductName "
    End If

    If e.CommandName = "Cancel" Then
        CType(TPAnnuity_GridView.FooterRow.FindControl("NewCompanyID"), DropDownList).SelectedIndex = 0
        CType(TPAnnuity_GridView.FooterRow.FindControl("NewProductName"), TextBox).Text = ""
        CType(TPAnnuity_GridView.FooterRow.FindControl("NewIssueAges"), TextBox).Text = ""
        CType(TPAnnuity_GridView.FooterRow.FindControl("NewPlanTypeName"), TextBox).Text = ""
        CType(TPAnnuity_GridView.FooterRow.FindControl("NewAgentFYC"), TextBox).Text = ""
        CType(TPAnnuity_GridView.FooterRow.FindControl("NewContractPoints"), TextBox).Text = ""
        CType(TPAnnuity_GridView.FooterRow.FindControl("NewBonusPoints"), TextBox).Text = ""
        CType(TPAnnuity_GridView.FooterRow.FindControl("NewIncludeInSummary"), DropDownList).SelectedIndex = 0
        CType(TPAnnuity_GridView.FooterRow.FindControl("NewIncludeInTopPicks"), DropDownList).SelectedIndex = 0
        CType(TPAnnuity_GridView.FooterRow.FindControl("NewActiveProduct"), DropDownList).SelectedIndex = 0
    ElseIf e.CommandName = "Insert" Then
        TPAnnuity_SqlDataSource.InsertParameters.Clear()

        Dim test1 As New Parameter("CompanyIDInt", TypeCode.Int32)
        Dim test2 As New Parameter("ProductNameText", TypeCode.String)
        Dim test3 As New Parameter("IssueAgesText", TypeCode.String)
        Dim test4 As New Parameter("PlanTypeNameText", TypeCode.String)
        Dim test5 As New Parameter("AgentFYCInt", TypeCode.Int32)
        Dim test6 As New Parameter("AgentRenewalInt", TypeCode.String)
        Dim test7 As New Parameter("ContractPointsDec", TypeCode.Decimal)
        Dim test8 As New Parameter("BonusPointsInt", TypeCode.Decimal)
        Dim test9 As New Parameter("IncludeInSummaryInt", TypeCode.Byte)
        Dim test10 As New Parameter("IncludeInTopPicksInt", TypeCode.Byte)
        Dim test11 As New Parameter("ActiveProductInt", TypeCode.Byte)

        test1.DefaultValue = CType(TPAnnuity_GridView.FooterRow.FindControl("NewCompanyID"), DropDownList).SelectedValue
        test2.DefaultValue = CType(TPAnnuity_GridView.FooterRow.FindControl("NewProductName"), TextBox).Text
        test3.DefaultValue = CType(TPAnnuity_GridView.FooterRow.FindControl("NewIssueAges"), TextBox).Text
        test4.DefaultValue = CType(TPAnnuity_GridView.FooterRow.FindControl("NewPlanTypeName"), TextBox).Text
        test5.DefaultValue = Utils.NumOrNull(CType(TPAnnuity_GridView.FooterRow.FindControl("NewAgentFYC"), TextBox).Text)
        test6.DefaultValue = CType(TPAnnuity_GridView.FooterRow.FindControl("NewAgentRenewal"), TextBox).Text
        test7.DefaultValue = Utils.NumOrNull(CType(TPAnnuity_GridView.FooterRow.FindControl("NewContractPoints"), TextBox).Text)
        test8.DefaultValue = Utils.NumOrNull(CType(TPAnnuity_GridView.FooterRow.FindControl("NewBonusPoints"), TextBox).Text)
        test9.DefaultValue = CType(TPAnnuity_GridView.FooterRow.FindControl("NewIncludeInSummary"), DropDownList).SelectedIndex
        test10.DefaultValue = CType(TPAnnuity_GridView.FooterRow.FindControl("NewIncludeInTopPicks"), DropDownList).SelectedIndex
        test11.DefaultValue = CType(TPAnnuity_GridView.FooterRow.FindControl("NewActiveProduct"), DropDownList).SelectedIndex

        TPAnnuity_SqlDataSource.InsertParameters.Add(test1)
        TPAnnuity_SqlDataSource.InsertParameters.Add(test2)
        TPAnnuity_SqlDataSource.InsertParameters.Add(test3)
        TPAnnuity_SqlDataSource.InsertParameters.Add(test4)
        TPAnnuity_SqlDataSource.InsertParameters.Add(test5)
        TPAnnuity_SqlDataSource.InsertParameters.Add(test6)
        TPAnnuity_SqlDataSource.InsertParameters.Add(test7)
        TPAnnuity_SqlDataSource.InsertParameters.Add(test8)
        TPAnnuity_SqlDataSource.InsertParameters.Add(test9)
        TPAnnuity_SqlDataSource.InsertParameters.Add(test10)
        TPAnnuity_SqlDataSource.InsertParameters.Add(test11)

        TPAnnuity_SqlDataSource.Insert()
    ElseIf e.CommandName = "Update" Then
        TPAnnuity_SqlDataSource.UpdateParameters.Clear()

        Dim param1 As New Parameter("CompanyIDInt", TypeCode.Int32)
        Dim param2 As New Parameter("ProductNameText", TypeCode.String)
        Dim param3 As New Parameter("IssueAgesText", TypeCode.String)
        Dim param4 As New Parameter("PlanTypeNameText", TypeCode.String)
        Dim param5 As New Parameter("AgentFYCInt", TypeCode.Int32)
        Dim param6 As New Parameter("AgentRenewalInt", TypeCode.String)
        Dim param7 As New Parameter("ContractPointsDec", TypeCode.Decimal)
        Dim param8 As New Parameter("BonusPointsInt", TypeCode.Decimal)
        Dim param9 As New Parameter("IncludeInSummaryInt", TypeCode.Int32)
        Dim param10 As New Parameter("IncludeInTopPicksInt", TypeCode.Int32)
        Dim param11 As New Parameter("ActiveProductInt", TypeCode.Int32)
        Dim param12 As New Parameter("AnnuityTotalPointsIDInt", TypeCode.Int32)

        param1.DefaultValue = CType(e.CommandSource.FindControl("EditACompanyID"), DropDownList).SelectedValue
        param2.DefaultValue = CType(e.CommandSource.FindControl("EditAProductName"), TextBox).Text
        param3.DefaultValue = CType(e.CommandSource.FindControl("EditAIssueAges"), TextBox).Text
        param4.DefaultValue = CType(e.CommandSource.FindControl("EditAPlanTypeName"), TextBox).Text
        param5.DefaultValue = Utils.NumOrNull(CType(e.CommandSource.FindControl("EditAAgentFYC"), TextBox).Text)
        param6.DefaultValue = CType(e.CommandSource.FindControl("EditAAgentRenewal"), TextBox).Text
        param7.DefaultValue = Utils.NumOrNull(CType(e.CommandSource.FindControl("EditAContractPoints"), TextBox).Text)
        param8.DefaultValue = Utils.NumOrNull(CType(e.CommandSource.FindControl("EditABonusPoints"), TextBox).Text)
        param9.DefaultValue = CType(e.CommandSource.FindControl("EditAIncludeInSummary"), DropDownList).SelectedIndex
        param10.DefaultValue = CType(e.CommandSource.FindControl("EditAIncludeInTopPicks"), DropDownList).SelectedIndex
        param11.DefaultValue = CType(e.CommandSource.FindControl("EditAActiveProduct"), DropDownList).SelectedIndex
        param12.DefaultValue = Utils.NumOrNull(CType(e.CommandSource.FindControl("EditAAnnuityTotalPointsID"), Label).Text)

        TPAnnuity_SqlDataSource.UpdateParameters.Add(param1)
        TPAnnuity_SqlDataSource.UpdateParameters.Add(param2)
        TPAnnuity_SqlDataSource.UpdateParameters.Add(param3)
        TPAnnuity_SqlDataSource.UpdateParameters.Add(param4)
        TPAnnuity_SqlDataSource.UpdateParameters.Add(param5)
        TPAnnuity_SqlDataSource.UpdateParameters.Add(param6)
        TPAnnuity_SqlDataSource.UpdateParameters.Add(param7)
        TPAnnuity_SqlDataSource.UpdateParameters.Add(param8)
        TPAnnuity_SqlDataSource.UpdateParameters.Add(param9)
        TPAnnuity_SqlDataSource.UpdateParameters.Add(param10)
        TPAnnuity_SqlDataSource.UpdateParameters.Add(param11)
        TPAnnuity_SqlDataSource.UpdateParameters.Add(param12)

        TPAnnuity_SqlDataSource.Update()
    End If
End Sub

代码无效

    <!-- Total Points Life -->      
        <asp:Panel ID="TPLife_Panel" runat="server" visible="false">
            <hr />
                <table>
                    <tr>
                        <td>Search on </td>
                        <td>
                            <asp:DropDownList ID="TPLife_search_dropdown" runat="server">
                                <asp:ListItem Text="Company" Value="Company"></asp:ListItem>
                                <asp:ListItem Text="Company ID" Value="CompanyID"></asp:ListItem>
                                <asp:ListItem Text="Product Name" Value="ProductName"></asp:ListItem>
                            </asp:DropDownList>
                        </td>
                        <td> for </td>
                        <td>
                            <asp:TextBox ID="TPLife_search_Text" runat="server"></asp:TextBox>
                        </td>
                        <td>
                            <asp:Button ID="TPLife_search_Button" runat="server" Text="Search" OnClick="TPLife_search_Click" CssClass="buttonstyle" onmouseover="shade(this);" onmouseout="unshade(this);" />
                        </td>
                    </tr>
                </table>    
                <asp:GridView ID="TPLife_GridView" AllowSorting="true" AllowPaging="true" Runat="server"
                    DataSourceID="TPLife_SqlDataSource" DataKeyNames="LifeTotalPointsID" 
                    AutoGenerateColumns="False" ShowFooter="true" PageSize="20">
                    <Columns>               
                    <asp:TemplateField HeaderText="ID" visible="False" InsertVisible="False" SortExpression="LifeTotalPointsID" HeaderStyle-VerticalAlign="Bottom">
                        <ItemTemplate>
                            <asp:Label ID="Label0" runat="server" Text='<%# Bind("LifeTotalPointsID") %>'></asp:Label>
                        </ItemTemplate>
                        <EditItemTemplate>
                            <asp:Label ID="EditLLifeTotalPointsID" runat="server" Text='<%# Bind("LifeTotalPointsID") %>'></asp:Label>
                        </EditItemTemplate>
                        <ItemStyle HorizontalAlign="Center" />
                    </asp:TemplateField>

                    <asp:TemplateField HeaderText="Company" SortExpression="CompanyName" HeaderStyle-VerticalAlign="Bottom">
                        <ItemTemplate>
                            <asp:Label ID="Label11" runat="server" Text='<%# Bind("CompanyName") %>'></asp:Label>
                        </ItemTemplate>
                        <EditItemTemplate>
                            <asp:DropDownList ID="EditLCompanyID" runat="server" DataSource="<%# ddlCompanyDS %>" DataValueField="CompanyID" DataTextField="CompanyName" selectedValue='<%# Bind("CompanyID") %>'></asp:DropDownList>
                        </EditItemTemplate>
                        <FooterTemplate>
                            <asp:DropDownList ID="NewCompanyID" runat="server" DataSource="<%# ddlCompanyDS %>" DataValueField="CompanyID" DataTextField="CompanyName"></asp:DropDownList>
                            <asp:RequiredFieldValidator ID="RequiredFieldValidator12" runat="server" ControlToValidate="NewCompanyID" Display="Dynamic"  ForeColor="" ErrorMessage="You must enter a value. *" Enabled="false"></asp:RequiredFieldValidator>
                        </FooterTemplate>
                        <FooterStyle Wrap="False" />
                    </asp:TemplateField>

                    <etc I ran out of room>

                    <asp:TemplateField ShowHeader="False">
                    <ItemTemplate>
                        <asp:LinkButton ID="lbEdit" runat="server" CausesValidation="False" CommandName="Edit" Text="Edit" ></asp:LinkButton>
                    </ItemTemplate>
                    <EditItemTemplate>
                        <asp:LinkButton ID="lbUpdate" runat="server" CausesValidation="False" CommandName="Update" Text="Update" ></asp:LinkButton>
                        <asp:LinkButton ID="lbCancel" runat="server" CausesValidation="False" CommandName="Cancel" Text="Cancel"></asp:LinkButton>
                    </EditItemTemplate>
                    <FooterTemplate>
                        <asp:LinkButton ID="lbInsert" runat="server" CausesValidation="True" CommandName="Insert" Text="Insert" ></asp:LinkButton>
                        <asp:LinkButton ID="LinkButton2" runat="server" CausesValidation="False" CommandName="Cancel" Text="Reset"></asp:LinkButton>
                    </FooterTemplate>
                </asp:TemplateField>

                    </Columns>
                </asp:GridView>

                <asp:SqlDataSource ID="TPLife_SqlDataSource" Runat="server"
                    SelectCommand="SELECT * FROM tblTotalPointsLife a left outer join tblcompanyinfo ci on a.CompanyID = ci.CompanyID ORDER BY (CASE WHEN CompanyName Is Null then 1 ELSE 0 END), CompanyName, ProductName "
                    InsertCommand="INSERT INTO [tblTotalPointsAnnuity](CompanyID, ProductName, PlanTypeName, StandardAgtFYC, StandardFYCExcess, StandardRenewal, PreferredAgtFYC, PreferredFYCExcess, PreferredRenewal, ContractPoints, BonusPoints, IncludeInSummary, IncludeInTopPicks, ActiveProduct) VALUES(@LCompanyIDInt, @LProductNameText, @LPlanTypeNameText, @LStandardAgtFYCInt, @LStandardFYCExcessInt, @LStandardRenewalInt, @LPreferredAgtFYCInt, @LPreferredFYCExcessInt, @LPreferredRenewalInt, @LContractPointsDec, @LBonusPointsInt, @LIncludeInSummaryInt, @LIncludeInTopPicksInt, @LActiveProductInt) "
                    UpdateCommand="UPDATE [tblTotalPointsAnnuity] Set CompanyID = @LCompanyIDInt, ProductName = @LProductNameTest = @LProductNameText, IssueAges = @LIssueAgesText, PlanTypeName = @LPlanTypeNameText, StandardAgtFYC = @LStandardAgtFYCInt, StandardFYCExcess = @LStandardFYCExcessInt, StandardRenewal = @LStandardRenewalInt, PreferredAgtFYC = @LPreferredAgtFYCInt, PreferredFYCExcess = @LPreferredFYCExcessInt, PreferredRenewal = @LPreferredRenewalInt, ContractPoints = @LContractPointsDec, BonusPoints = @LBonusPointsInt, IncludeInSummary = @LIncludeInSummaryInt, IncludeInTopPicks = @LIncludeInTopPicksInt, ActiveProduct = @LActiveProductInt WHERE [LifeTotalPointsID] = @LLifeTotalPointsIDInt">
                    <InsertParameters>
                        <asp:Parameter Name="LCompanyIDInt" Type="Int32" />
                    </InsertParameters>
                    <UpdateParameters>
                        <asp:Parameter Name="LCompanyIDInt" Type="Int32" />
                    </UpdateParameters>
                </asp:SqlDataSource>
        </asp:Panel>
<!-- END Total Points Life -->

后面的代码无效

Sub TPLife_RowCommand(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewCommandEventArgs) Handles TPLife_GridView.RowCommand
    Dim TPLife_searchStr As String = TPLife_search_Text.Text

    If TPLife_searchStr = "" Then
        TPLife_SqlDataSource.SelectCommand = "SELECT * FROM tblTotalPointsLife a " & _
                                        " left outer join tblcompanyinfo ci on a.CompanyID = ci.CompanyID " & _
                                        " ORDER BY (CASE WHEN CompanyName Is Null then 1 ELSE 0 END), CompanyName, ProductName "
    Else
        TPLife_SqlDataSource.SelectCommand = "SELECT * FROM tblTotalPointsLife a " & _
                                        " left outer join tblcompanyinfo ci on a.CompanyID = ci.CompanyID " & _
                                    "WHERE 1=1 "

        If TPLife_search_dropdown.SelectedValue = "Company" Then
            TPLife_SqlDataSource.SelectCommand &= " AND ci.CompanyName like '%" & TPLife_search_Text.Text & "%' OR ci.CompanyCode like '%" & TPLife_search_Text.Text & "%'"
        Else If TPLife_search_dropdown.SelectedValue = "CompanyID" Then
            TPLife_SqlDataSource.SelectCommand &= " AND ci.CompanyID = " & TPLife_search_Text.Text
        Else
            TPLife_SqlDataSource.SelectCommand &= " AND " & TPLife_search_dropdown.SelectedValue & " like '%" & TPLife_search_Text.Text & "%' "
        End If
        TPLife_SqlDataSource.SelectCommand &= " ORDER BY (CASE WHEN CompanyName Is Null then 1 ELSE 0 END), CompanyName, ProductName "
    End If

    If e.CommandName = "Cancel" Then
        CType(TPLife_GridView.FooterRow.FindControl("NewCompanyID"), DropDownList).SelectedIndex = 0
        CType(TPLife_GridView.FooterRow.FindControl("NewProductName"), TextBox).Text = ""
        CType(TPLife_GridView.FooterRow.FindControl("NewPlanTypeName"), TextBox).Text = ""
        CType(TPLife_GridView.FooterRow.FindControl("NewStandardAgtFYC"), TextBox).Text = ""
        CType(TPLife_GridView.FooterRow.FindControl("NewStandardFYCExcess"), TextBox).Text = ""
        CType(TPLife_GridView.FooterRow.FindControl("NewStandardRenewal"), TextBox).Text = ""
        CType(TPLife_GridView.FooterRow.FindControl("NewPreferredAgtFYC"), TextBox).Text = ""
        CType(TPLife_GridView.FooterRow.FindControl("NewPreferredFYCExcess"), TextBox).Text = ""
        CType(TPLife_GridView.FooterRow.FindControl("NewPreferredRenewal"), TextBox).Text = ""
        CType(TPLife_GridView.FooterRow.FindControl("NewContractPoints"), TextBox).Text = ""
        CType(TPLife_GridView.FooterRow.FindControl("NewBonusPoints"), TextBox).Text = ""
        CType(TPLife_GridView.FooterRow.FindControl("NewIncludeInSummary"), DropDownList).SelectedIndex = 0
        CType(TPLife_GridView.FooterRow.FindControl("NewIncludeInTopPicks"), DropDownList).SelectedIndex = 0
        CType(TPLife_GridView.FooterRow.FindControl("NewActiveProduct"), DropDownList).SelectedIndex = 0
    ElseIf e.CommandName = "Insert" Then
        TPLife_SqlDataSource.InsertParameters.Clear()

        Dim test1 As New Parameter("LCompanyIDInt", TypeCode.Int32)
        Dim test2 As New Parameter("LProductNameText", TypeCode.String)
        Dim test3 As New Parameter("LPlanTypeNameText", TypeCode.String)
        Dim test4 As New Parameter("LStandardAgtFYCInt", TypeCode.Int32)
        Dim test5 As New Parameter("LStandardFYCExcessInt", TypeCode.Int32)
        Dim test6 As New Parameter("LStandardRenewalInt", TypeCode.Int32)
        Dim test7 As New Parameter("LPreferredAgtFYCInt", TypeCode.Int32)
        Dim test8 As New Parameter("LPreferredFYCExcessInt", TypeCode.Int32)
        Dim test9 As New Parameter("LPreferredRenewalInt", TypeCode.Int32)
        Dim test10 As New Parameter("LContractPointsDec", TypeCode.Decimal)
        Dim test11 As New Parameter("LBonusPointsInt", TypeCode.Decimal)
        Dim test12 As New Parameter("LIncludeInSummaryInt", TypeCode.Byte)
        Dim test13 As New Parameter("LIncludeInTopPicksInt", TypeCode.Byte)
        Dim test14 As New Parameter("LActiveProductInt", TypeCode.Byte)

        test1.DefaultValue = CType(TPLife_GridView.FooterRow.FindControl("NewCompanyID"), DropDownList).SelectedValue
        test2.DefaultValue = CType(TPLife_GridView.FooterRow.FindControl("NewProductName"), TextBox).Text
        test3.DefaultValue = CType(TPLife_GridView.FooterRow.FindControl("NewPlanTypeName"), TextBox).Text
        test4.DefaultValue = Utils.NumOrNull(CType(TPLife_GridView.FooterRow.FindControl("NewStandardAgtFYC"), TextBox).Text)
        test5.DefaultValue = Utils.NumOrNull(CType(TPLife_GridView.FooterRow.FindControl("NewStandardFYCExcess"), TextBox).Text)
        test6.DefaultValue = Utils.NumOrNull(CType(TPLife_GridView.FooterRow.FindControl("NewStandardRenewal"), TextBox).Text)
        test7.DefaultValue = Utils.NumOrNull(CType(TPLife_GridView.FooterRow.FindControl("NewPreferredAgtFYC"), TextBox).Text)
        test8.DefaultValue = Utils.NumOrNull(CType(TPLife_GridView.FooterRow.FindControl("NewPreferredFYCExcess"), TextBox).Text)
        test9.DefaultValue = Utils.NumOrNull(CType(TPLife_GridView.FooterRow.FindControl("NewPreferredRenewal"), TextBox).Text)
        test10.DefaultValue = Utils.NumOrNull(CType(TPLife_GridView.FooterRow.FindControl("NewContractPoints"), TextBox).Text)
        test11.DefaultValue = Utils.NumOrNull(CType(TPLife_GridView.FooterRow.FindControl("NewBonusPoints"), TextBox).Text)
        test12.DefaultValue = CType(TPLife_GridView.FooterRow.FindControl("NewIncludeInSummary"), DropDownList).SelectedIndex
        test13.DefaultValue = CType(TPLife_GridView.FooterRow.FindControl("NewIncludeInTopPicks"), DropDownList).SelectedIndex
        test14.DefaultValue = CType(TPLife_GridView.FooterRow.FindControl("NewActiveProduct"), DropDownList).SelectedIndex

        TPLife_SqlDataSource.InsertParameters.Add(test1)
        TPLife_SqlDataSource.InsertParameters.Add(test2)
        TPLife_SqlDataSource.InsertParameters.Add(test3)
        TPLife_SqlDataSource.InsertParameters.Add(test4)
        TPLife_SqlDataSource.InsertParameters.Add(test5)
        TPLife_SqlDataSource.InsertParameters.Add(test6)
        TPLife_SqlDataSource.InsertParameters.Add(test7)
        TPLife_SqlDataSource.InsertParameters.Add(test8)
        TPLife_SqlDataSource.InsertParameters.Add(test9)
        TPLife_SqlDataSource.InsertParameters.Add(test10)
        TPLife_SqlDataSource.InsertParameters.Add(test11)
        TPLife_SqlDataSource.InsertParameters.Add(test12)
        TPLife_SqlDataSource.InsertParameters.Add(test13)
        TPLife_SqlDataSource.InsertParameters.Add(test14)

        TPLife_SqlDataSource.Insert() ***FAILS ON THIS LINE***
    ElseIf e.CommandName = "Update" Then
        TPLife_SqlDataSource.UpdateParameters.Clear()

        Dim param1 As New Parameter("LCompanyIDInt", TypeCode.Int32)
        Dim param2 As New Parameter("LProductNameText", TypeCode.String)
        Dim param3 As New Parameter("LPlanTypeNameText", TypeCode.String)
        Dim param4 As New Parameter("LStandardAgtFYCInt", TypeCode.Int32)
        Dim param5 As New Parameter("LStandardFYCExcessInt", TypeCode.Int32)
        Dim param6 As New Parameter("LStandardRenewalInt", TypeCode.Int32)
        Dim param7 As New Parameter("LPreferredAgtFYCInt", TypeCode.Int32)
        Dim param8 As New Parameter("LPreferredFYCExcessInt", TypeCode.Int32)
        Dim param9 As New Parameter("LPreferredRenewalInt", TypeCode.Int32)
        Dim param10 As New Parameter("LContractPointsDec", TypeCode.Decimal)
        Dim param11 As New Parameter("LBonusPointsInt", TypeCode.Decimal)
        Dim param12 As New Parameter("LIncludeInSummaryInt", TypeCode.Byte)
        Dim param13 As New Parameter("LIncludeInTopPicksInt", TypeCode.Byte)
        Dim param14 As New Parameter("LActiveProductInt", TypeCode.Byte)
        Dim param15 As New Parameter("LLifeTotalPointsIDInt", TypeCode.Int32)

        param1.DefaultValue = CType(e.CommandSource.FindControl("EditLCompanyID"), DropDownList).SelectedValue
        param2.DefaultValue = CType(e.CommandSource.FindControl("EditLProductName"), TextBox).Text
        param3.DefaultValue = CType(e.CommandSource.FindControl("EditLPlanTypeName"), TextBox).Text
        param4.DefaultValue = Utils.NumOrNull(CType(e.CommandSource.FindControl("EditLStandardAgtFYC"), TextBox).Text)
        param5.DefaultValue = Utils.NumOrNull(CType(e.CommandSource.FindControl("EditLStandardFYCExcess"), TextBox).Text)
        param6.DefaultValue = Utils.NumOrNull(CType(e.CommandSource.FindControl("EditLStandardRenewal"), TextBox).Text)
        param7.DefaultValue = Utils.NumOrNull(CType(e.CommandSource.FindControl("EditLPreferredAgtFYC"), TextBox).Text)
        param8.DefaultValue = Utils.NumOrNull(CType(e.CommandSource.FindControl("EditLPreferredFYCExcess"), TextBox).Text)
        param9.DefaultValue = Utils.NumOrNull(CType(e.CommandSource.FindControl("EditLPreferredRenewal"), TextBox).Text)
        param10.DefaultValue = Utils.NumOrNull(CType(e.CommandSource.FindControl("EditLContractPoints"), TextBox).Text)
        param11.DefaultValue = Utils.NumOrNull(CType(e.CommandSource.FindControl("EditLBonusPoints"), TextBox).Text)
        param12.DefaultValue = CType(e.CommandSource.FindControl("EditLIncludeInSummary"), DropDownList).SelectedIndex
        param13.DefaultValue = CType(e.CommandSource.FindControl("EditLIncludeInTopPicks"), DropDownList).SelectedIndex
        param14.DefaultValue = CType(e.CommandSource.FindControl("EditLActiveProduct"), DropDownList).SelectedIndex
        param15.DefaultValue = Utils.NumOrNull(CType(e.CommandSource.FindControl("EditLLifeTotalPointsID"), Label).Text)

        TPLife_SqlDataSource.InsertParameters.Add(param1)
        TPLife_SqlDataSource.InsertParameters.Add(param2)
        TPLife_SqlDataSource.InsertParameters.Add(param3)
        TPLife_SqlDataSource.InsertParameters.Add(param4)
        TPLife_SqlDataSource.InsertParameters.Add(param5)
        TPLife_SqlDataSource.InsertParameters.Add(param6)
        TPLife_SqlDataSource.InsertParameters.Add(param7)
        TPLife_SqlDataSource.InsertParameters.Add(param8)
        TPLife_SqlDataSource.InsertParameters.Add(param9)
        TPLife_SqlDataSource.InsertParameters.Add(param10)
        TPLife_SqlDataSource.InsertParameters.Add(param11)
        TPLife_SqlDataSource.InsertParameters.Add(param12)
        TPLife_SqlDataSource.InsertParameters.Add(param13)
        TPLife_SqlDataSource.InsertParameters.Add(param14)
        TPLife_SqlDataSource.InsertParameters.Add(param15)

        TPLife_SqlDataSource.Update() ***FAILS ON THIS LINE***
    End If
End Sub

我试过比较前后代码,但看不出问题所在。我试过使第二个面板默认可见,但它没有任何改变。重置功能在第二个网格上工作正常,但插入和更新命令没有。

您应该更改这些行

TPAnnuity_SqlDataSource.InsertParameters.Add(testN)

TPLife_SqlDataSource.InsertParameters.Add(testN)

编辑

您忘记将 asp:SqlDataSource INSERTUPDATE 命令的 table 名称从 tblTotalPointsAnnuity 更改为 tblTotalPointsLife