参数类型与 QueryExtender 不匹配

发布于 2024-11-04 20:40:50 字数 1369 浏览 0 评论 0原文

我有一个实体,我从标题 (nvarchar(256))、流行度 (int) 和类型 (int) 中提取三列。然后,我尝试在单选按钮列表上使用 QueryExtender,以允许最终用户过滤除特定结果之外的所有结果,但我不断收到“参数类型不匹配”错误。这是实际的代码:

 <asp:QueryExtender ID="QueryExtender1" runat="server" TargetControlID="EntityDataSource1">
    <asp:SearchExpression DataFields="Type" SearchType="StartsWith">
        <asp:ControlParameter ControlID="rblTypes" PropertyName="SelectedValue" />
    </asp:SearchExpression>
 </asp:QueryExtender>

 <asp:RadioButtonList ID="rblTypes" runat="server" AutoPostBack="True" 
     RepeatColumns="5" RepeatDirection="Horizontal">
     <asp:ListItem Value="1">Active Inside</asp:ListItem>
     <asp:ListItem Value="2">Semi-Active Inside</asp:ListItem>
     <asp:ListItem Value="3">Inactive Inside</asp:ListItem>
     <asp:ListItem Value="4">Chair Game</asp:ListItem>
     <asp:ListItem Value="5">Active Outside</asp:ListItem>
     <asp:ListItem Value="6">Semi-Active Outside</asp:ListItem>
     <asp:ListItem Value="7">Inactive Outside</asp:ListItem>
     <asp:ListItem Value="8">Water Game</asp:ListItem>
     <asp:ListItem Value="9">Messy Game</asp:ListItem>
     <asp:ListItem Value="10">Trick</asp:ListItem>
 </asp:RadioButtonList>

有什么建议吗?

I have an Entity I'm pulling three columns from Title (nvarchar(256)), Popularity (int), and Type (int). I'm then trying to use QueryExtender on a radiobuttonlist to allow the end user to filter out all but specific results but I keep getting an "Argument Types do not match" error. Here is the actual code:

 <asp:QueryExtender ID="QueryExtender1" runat="server" TargetControlID="EntityDataSource1">
    <asp:SearchExpression DataFields="Type" SearchType="StartsWith">
        <asp:ControlParameter ControlID="rblTypes" PropertyName="SelectedValue" />
    </asp:SearchExpression>
 </asp:QueryExtender>

 <asp:RadioButtonList ID="rblTypes" runat="server" AutoPostBack="True" 
     RepeatColumns="5" RepeatDirection="Horizontal">
     <asp:ListItem Value="1">Active Inside</asp:ListItem>
     <asp:ListItem Value="2">Semi-Active Inside</asp:ListItem>
     <asp:ListItem Value="3">Inactive Inside</asp:ListItem>
     <asp:ListItem Value="4">Chair Game</asp:ListItem>
     <asp:ListItem Value="5">Active Outside</asp:ListItem>
     <asp:ListItem Value="6">Semi-Active Outside</asp:ListItem>
     <asp:ListItem Value="7">Inactive Outside</asp:ListItem>
     <asp:ListItem Value="8">Water Game</asp:ListItem>
     <asp:ListItem Value="9">Messy Game</asp:ListItem>
     <asp:ListItem Value="10">Trick</asp:ListItem>
 </asp:RadioButtonList>

Any suggestions?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

对不⑦ 2024-11-11 20:40:50

只是猜测:SelectedValue 是一个字符串。它与 Type 不匹配,后者是一个 int。您可以尝试在 ControlParameter 中明确指定 DbType

<asp:ControlParameter ControlID="rblTypes" PropertyName="SelectedValue"
    DbType="Int32" />

Edit

asp:SearchExpression 似乎仅适用于文本基于搜索,这意味着您指定的数据字段必须是 string 类型,而您的 Type 列则不是这种情况。除了 SearchExpression,您还可以尝试使用 asp:RangeExpression 并为最小值和最大值指定相同的值,即 RadioButtonList 的 SelectedValue

<asp:QueryExtender ID="QueryExtender1" runat="server"
  TargetControlID="EntityDataSource1">
  <asp:RangeExpression DataField="Type" MinType="Inclusive" MaxType="Inclusive">
    <asp:ControlParameter ControlID="rblTypes" PropertyName="SelectedValue" />
    <asp:ControlParameter ControlID="rblTypes" PropertyName="SelectedValue" />
  </asp:SearchExpression>
</asp:QueryExtender>

Just a guess: SelectedValue is a string. It doesn't match with Type which is an int. You could try to specify the DbType explicitely in the ControlParameter:

<asp:ControlParameter ControlID="rblTypes" PropertyName="SelectedValue"
    DbType="Int32" />

Edit

asp:SearchExpression seems only to be for text based search which means that the data fields you specify must be of type string which is not the case for your Type column. Instead of a SearchExpression you could try an asp:RangeExpression and specify the same value for minimum and maximum, namely the SelectedValue of the RadioButtonList:

<asp:QueryExtender ID="QueryExtender1" runat="server"
  TargetControlID="EntityDataSource1">
  <asp:RangeExpression DataField="Type" MinType="Inclusive" MaxType="Inclusive">
    <asp:ControlParameter ControlID="rblTypes" PropertyName="SelectedValue" />
    <asp:ControlParameter ControlID="rblTypes" PropertyName="SelectedValue" />
  </asp:SearchExpression>
</asp:QueryExtender>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文