asp.net - 在 ControlParameter 中找不到控件 ID

标签 asp.net sql-insert sqldatasource controlparameter

我试图从文本框中插入值,但收到错误消息,无法在控制参数中找到 controlid。 TextBox 位于表单 View 内,而表单 View 位于 ListView 内。 SqlDataSource 位于 ListView 之外。

我的InsertButton_Click方法

protected void InsertButton_Click(object sender, EventArgs e)
    {

        var ctrl = (Control)sender;
        var formview = (FormView)ctrl.NamingContainer;
        formview.ChangeMode(FormViewMode.Insert);
        SectionListView.DataSource = SectionDataSource;
        SectionListView.DataBind();

    }

InsertItem 模板

<InsertItemTemplate>
    <tr style="">
        <td>
           <div style="font-size: .8em;">
               <asp:FormView ID="SectionFormView" runat="server" DataKeyNames="SectionItemID" DataSourceID="SectionDataSource">
                   <ItemTemplate>
                       <asp:Button ID="InsertButton" runat="server" CommandName="Insert" Text="Insert" OnClick="InsertButton_Click" Font-Size="1.2em" />
                       <asp:Button ID="CancelButton" runat="server" CommandName="Cancel" Text="Clear" Font-Size="1.2em" />
                       <asp:Label ID="SectionItemLabel" runat="server" Text="SectionItem" Font-Bold="true" Font-Size="1.2em" />
                       <asp:TextBox ID="SectionItemTextBox" runat="server" />
                       <asp:Label ID="SectionItemSubLabel" runat="server" Text="SectionItem Label" Font-Bold="true" Font-Size="1.2em" />
                       <asp:TextBox ID="SectionItemLabelTextBox" runat="server"/>

                   </ItemTemplate>
               </asp:FormView>
           </div>
      </td>
  </tr>
</InsertItemTemplate>

我的SqlDataSource

<asp:SqlDataSource ID="SectionDataSource" runat="server" ConnectionString="<%$ ConnectionStrings:ORHP_Dev03182014ConnectionString %>" SelectCommand="SELECT DISTINCT SectionItem,SectionItemLabel,SectionItemID FROM Core.SectionItem_Lkup"
                    InsertCommand="INSERT INTO Core.SectionItem_Lkup(SectionItem, SectionItemLabel) VALUES (@SectionItem, @SectionItemLabel)">
        <InsertParameters>
                <asp:ControlParameter ControlID="SectionItemTextBox" Name="SectionItem" PropertyName="Text" />
                <asp:ControlParameter ControlID="SectionItemLabelTextBox" Name="SectionItemLabel" PropertyName="Text" />
        </InsertParameters>
 </asp:SqlDataSource>

最佳答案

当你想使用子控件作为控件参数时,需要使用限定的id作为控件id。尝试如下更改 SQL 数据源

<asp:SqlDataSource ID="SectionDataSource" runat="server" ConnectionString="<%$ ConnectionStrings:ORHP_Dev03182014ConnectionString %>" SelectCommand="SELECT DISTINCT SectionItem,SectionItemLabel,SectionItemID FROM Core.SectionItem_Lkup"
                    InsertCommand="INSERT INTO Core.SectionItem_Lkup(SectionItem, SectionItemLabel) VALUES (@SectionItem, @SectionItemLabel)">
        <InsertParameters>
                <asp:ControlParameter ControlID="SectionFormView$SectionItemTextBox" Name="SectionItem" PropertyName="Text" />
                <asp:ControlParameter ControlID="SectionFormView$SectionItemLabelTextBox" Name="SectionItemLabel" PropertyName="Text" />
        </InsertParameters>
 </asp:SqlDataSource>

关于asp.net - 在 ControlParameter 中找不到控件 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25386048/

相关文章:

asp.net - 如何将asp.net NULL值转换为 ""(空白字符串)

c# - 表达式中的 StartsWith 返回 null

C# ASP.Net - Global.asax 充满错误

android - 在 cocos2d-x 中插入 SQLITE

c# - 为什么我的 DbProviderFactory 的执行方式与 SqlClientFactory 不同?

asp.net - SQLDataSource 控制参数中的应用程序变量

asp.net - GridView SortExpression 问题

javascript - asp.net 在运行时更新标签

sql - 插入命令::错误:列 "value"不存在

javascript - 如何在 JavaScript 中获取标签的 ID