Asp.net sql或object-datacontrol select参数同时具有DefaultValue和ControlParameter

时间:2016-01-10 05:51:14

标签: asp.net webforms sqldatasource

我想获得有关在aspx代码中同时给出sql或object select参数时实际发生的事情的专家建议。 在下面的示例中,ControlParameter是一个隐藏控件,它在表单载荷中设置(比如值50)。问题1:执行选择操作时哪个值(控制值50或默认值99)优先? Q2:为ControlParameter提供DefaultValue的编码是否很差?

来自aspx代码的示例:

<SelectParameters>
   <asp:ControlParameter ControlID="hidUID_DIVISION" Name="UID_DIVISION" 
        PropertyName="Value" Type="Int32" DefaultValue="99" />

感谢。

1 个答案:

答案 0 :(得分:1)

根据MSDN: -

  

DefaultValue属性用于参数为的场景   绑定到一个值,但该值为null或无法解析时   评估参数对象。

因此,它回答了您的第一个问题,因为您的控制参数已经解析,并且将使用值50,将忽略默认值。

  

为ControlParameter提供DefaultValue的编码是否很差?

总而言之,实际上您应该提供默认值以避免用户可能遇到的任何混淆。例如,假设您使用gridview&amp;创建了一个简单的搜索功能。 Sqldatasource控制。您有一个下拉列表将用于过滤数据。现在,当下拉列表中没有选择任何内容时,第一次加载页面时,将不会显示任何记录,因为基于下拉列表的过滤条件将失败。为了避免这种情况,您应该提供一个默认值,以便用户可以在下拉列表中未选择任何内容时查看所有记录。 Check this answer了解我的意思。