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