'/'应用程序中的服务器错误。必须在ControlParameter'Product_Name'中指定ControlID

时间:2015-03-23 05:52:25

标签: asp.net vb.net drop-down-menu insert

我是新手,是APS和VB的初学者,我有SQL经验。我遇到的问题是我试图在VB aspx页面中选择两个值。 一个是可以输入类型的文本框,另一个是从下拉列表中选择的值,该下拉列表在我的SQL数据库中看起来像一个表。 我希望输入和选择的两个值作为新行输入到同一数据库的另一个表中,但是我收到以下错误。它把我推到了一圈。 必须在ControlParameter' Product_Name'中指定ControlID。

我的代码如下所示,我怀疑这是一件很简单的事情,我很遗憾,但是看不到它,有人可以帮忙吗?

<table style="width:100%;">
    <tr>
        <td>



            <asp:FormView ID="FormView1" runat="server" DataSourceID="SqlDataSource1" DefaultMode="Insert">
                <InsertItemTemplate>
                    Product_Name:
                    <asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="True" DataSourceID="SqlDataSource2" DataTextField="Product_Name" DataValueField="Product_Name">
                    </asp:DropDownList>
                    <ItemTemplate>
                    Product_Description:
                    <asp:TextBox ID="Product_DescriptionTextBox" runat="server" Text='<%# Bind("Product_Description") %>' />
                    <br />
                    <asp:Button ID="InsertButton" runat="server" CausesValidation="True" CommandName="Insert" Text="Insert" />
                    &nbsp;<asp:Button ID="InsertCancelButton" runat="server" CausesValidation="False" CommandName="Cancel" Text="Cancel" />
                </InsertItemTemplate>
            </asp:FormView>
            <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:Incident_TrackerConnectionString %>" InsertCommand="INSERT INTO [Incidents] ( [I_Product_Name], [I_Product_Description]) VALUES ( @Product_Name, @Product_Description)">
                <InsertParameters>
                <asp:ControlParameter Name="Product_Name" Type="String" />
                    <asp:Parameter Name="Product_Description" Type="String" />
                </InsertParameters>
            </asp:SqlDataSource>
            <asp:SqlDataSource ID="SqlDataSource2" runat="server" ConnectionString="<%$ ConnectionStrings:Incident_TrackerConnectionString %>" SelectCommand="select Product_Name from dbo.products"></asp:SqlDataSource>

        </td>
        <td>&nbsp;</td>
        <td>&nbsp;</td>
    </tr>
    <tr>
        <td class="auto-style2">&nbsp;</td>
        <td class="auto-style2"></td>
        <td class="auto-style2"></td>
    </tr>
    <tr>
        <td class="auto-style1">&nbsp;</td>
        <td class="auto-style1"></td>
        <td class="auto-style1"></td>
    </tr>
</table>
<br />
<br />
<br />

谢谢Kevin

1 个答案:

答案 0 :(得分:0)

您需要指定ControlID&amp; PropertyName是这样的: -

<InsertParameters>
     <asp:ControlParameter Name="Product_Name" ControlID="DropDownList1"
            PropertyName="SelectedValue" />
</InsertParameters>

修改: - 好的,既然您使用的是FormView,则需要像下面这样指定: -

 <asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="True"
      DataSourceID="SqlDataSource2" DataTextField="Product_Name"
      DataValueField="Product_Name" SelectedValue=<%# Bind('Product_Name') %>>
 </asp:DropDownList>

然后,将InsertParameters绑定为: -

<InsertParameters>
     <asp:Parameter Name="Product_Name" Type="String" />
     <asp:Parameter Name="Product_Description" Type="String" />
</InsertParameters>