2012-06-22 17 views
0

这里是我的EntityDatasource:如果未设置参数,如何防止EntityDatasource查询数据库?

<asp:EntityDataSource ID="edsUsers" runat="server" 
ConnectionString="name=kdEntities" DefaultContainerName="kdEntities" EnableDelete="True" 
EnableFlattening="False" EnableInsert="True" EnableUpdate="True" 
EntitySetName="Users" AutoGenerateWhereClause="true"> 
<WhereParameters> 
    <asp:SessionParameter Name="UsrID" SessionField="UsrID" DefaultValue="-1" Type="Int32" /> 
</WhereParameters> 

我想我需要使用EntityDatasource的OnSelecting事件,但我还没有想出如何检查参数值。

我想取消查询,如果值是-1​​,但我宁愿检查通过数据源,而不是参数使用的会话字段。

感谢 凯文

回答

1

你可能会认为将Object类型的自定义参数的。这可以希望解决你的问题。

<WhereParameters> 
      <cmsParameter:CustomParameter Name="UsrID" /> 
</WhereParameters> 

然后你就可以添加一个新的自定义参数类像

public class CustomParameter : Parameter 
{ 
    protected override object Eval(HttpContext context, Control control) 
    { 
     MembershipUser cur_User = Membership.GetUser(); 
     return cur_User.ProviderUserKey; 
    } 
} 

这实际上被分配到“UsrID”自定义参数我们已经指定。