ASP.NET在ControlParameter中找不到控件

ASP.NET在ControlParameter中找不到控件,asp.net,controlparameter,Asp.net,Controlparameter,我在这一点上很迷茫(已经做了一段时间了,但我遇到了障碍/截止日期),但是我被抛出的错误消息是在我点击btnupdate更新数据库中的字段之后 完整错误消息: Could not find control 'txtTitle' in ControlParameter 'Title'. 第页: 您需要引用控件的全名 在浏览器中打开页面时,可以轻松找到控件的全名。只需查看源代码,您就会看到它。您需要使用其全名引用控件 在浏览器中打开页面时,可以轻松找到控件的全名。只需查看源代码,您就会看到它。问题在

我在这一点上很迷茫(已经做了一段时间了,但我遇到了障碍/截止日期),但是我被抛出的错误消息是在我点击btnupdate更新数据库中的字段之后

完整错误消息:

Could not find control 'txtTitle' in ControlParameter 'Title'.
第页:


您需要引用控件的全名


在浏览器中打开页面时,可以轻松找到控件的全名。只需查看源代码,您就会看到它。

您需要使用其全名引用控件


在浏览器中打开页面时,可以轻松找到控件的全名。只需查看源代码,您就会看到它。

问题在于
txtitle
位于FormView中,因此无法以您在SqlDataSource上尝试的方式访问它。您不能通过ID直接访问它


您有一篇MSDN文章,可能有助于使用FormView和SqlDataSource

问题在于
txtTitle
位于FormView中,因此无法以您尝试在SqlDataSource上执行的方式访问它。您不能通过ID直接访问它


您的MSDN文章可能有助于使用FormView和SqlDataSource

您不应该使用
您不应该使用
您可以充分参考控件

您需要在更新参数的controlid值前面加上封闭视图的控件id(本例中为FormView“frmEditBook”)

将SqlDataSource的UpdateParameters部分替换为以下内容:

<UpdateParameters>
   <asp:ControlParameter Name="Title" ControlId="frmEditBook$txtTitle" PropertyName="Text"/>
   <asp:ControlParameter Name="Description" ControlId="frmEditBook$txtDescription" PropertyName="Text"/>
   <asp:ControlParameter Name="Id" ControlId="DropDownList_Books" PropertyName="SelectedValue"/>
</UpdateParameters>
保持不变,因为此控件不在FormView的范围内


我不建议使用浏览器提供的“全名”。。。特别是如果你使用母版页。。。它可能会随着您重新安排布局而改变。

您可以充分参考控件

您需要在更新参数的controlid值前面加上封闭视图的控件id(本例中为FormView“frmEditBook”)

将SqlDataSource的UpdateParameters部分替换为以下内容:

<UpdateParameters>
   <asp:ControlParameter Name="Title" ControlId="frmEditBook$txtTitle" PropertyName="Text"/>
   <asp:ControlParameter Name="Description" ControlId="frmEditBook$txtDescription" PropertyName="Text"/>
   <asp:ControlParameter Name="Id" ControlId="DropDownList_Books" PropertyName="SelectedValue"/>
</UpdateParameters>
保持不变,因为此控件不在FormView的范围内


我不建议使用浏览器提供的“全名”。。。特别是如果你使用母版页。。。它可能会随着您重新安排布局而改变。

正如您所看到的,问题在于上下文。您还可以将sqldatasource放在引用的控件所在的formview中(不正确且非常有限,但可以工作)

假设您有一个detailsview,其中有两个下拉列表,其中一个依赖于另一个。对我来说,有效的方法是将数据源放在与引用的控件相同的上下文(父控件)中,这样就不需要引用控件的完整路径

我的两分钱是,这让人想起了您必须如何在带有子窗体的Access窗体中引用控件。:)


正如您所见,问题在于上下文。您还可以将sqldatasource放在引用的控件所在的formview中(不正确且非常有限,但可以工作)

假设您有一个detailsview,其中有两个下拉列表,其中一个依赖于另一个。对我来说,有效的方法是将数据源放在与引用的控件相同的上下文(父控件)中,这样就不需要引用控件的完整路径

我的两分钱是,这让人想起了您必须如何在带有子窗体的Access窗体中引用控件。:)



切勿将连接字符串信息发布到数据库中。这只会给你带来麻烦,而不是你目前所经历的……谢谢你编辑了我的坏消息!切勿将连接字符串信息发布到数据库中。这只会给你带来麻烦,而不是你目前所经历的……谢谢你编辑了我的坏消息!1.将其从formview中删除可以解决问题,还是会导致其他错误2。Jesse建议的方法可以作为一个快速解决方案吗?我建议你看看MSDN的文章。这是处理这种情况的正确方法。将其从formview中删除可以解决问题,还是会导致其他错误2。Jesse建议的方法可以作为一个快速解决方案吗?我建议你看看MSDN的文章。这是处理这种情况的正确方法。我有同样的问题,这项工作对我来说,谢谢!我也有同样的问题,这是我的工作,谢谢!
  ....
 <UpdateParameters>
      <asp:Parameter Name="Title" Type="String"/>
      <asp:Parameter Name="Description" Type="String"/>
      <asp:Parameter Name="Id" Type="Int32"/>
  </UpdateParameters>
 .....
<UpdateParameters>
   <asp:ControlParameter Name="Title" ControlId="frmEditBook$txtTitle" PropertyName="Text"/>
   <asp:ControlParameter Name="Description" ControlId="frmEditBook$txtDescription" PropertyName="Text"/>
   <asp:ControlParameter Name="Id" ControlId="DropDownList_Books" PropertyName="SelectedValue"/>
</UpdateParameters>
ControlId="DropDownList_Books" 
<asp:DetailsView runat="server">
    <asp:TemplateField>
        <EditTemplate>
          <asp:DropDownList id="ParentDDL" Datasource="SQLDataSource1">

          </asp:DropDownList>
        </EditTemplate>
    </asp:TemplateField>
    <asp:TemplateField>
        <EditTemplate>
          <asp:DropDownList id="ParentDDL" Datasource="SQLDatasource2">

          </asp:DropDownList>
          <asp:SqlDataSource ID="SqlDataSource2" runat="server" ConnectionString="<%$ ConnectionStrings:ConnectionString %>" SelectCommand="SELECT * from table where field1=@field">
                                <SelectParameters>
                                    <asp:ControlParameter ControlID="ParentDDL" Name="field" 
                                        PropertyName="SelectedValue" Type="String" />
                                </SelectParameters>          
                            </asp:SqlDataSource>
        </EditTemplate>
    </asp:TemplateField>
</asp:DetailsView>