2013-04-09 46 views
2

問題:結合可變

異常詳細信息:System.Data.EntitySqlException:查詢語法無效。近期 '<',8號線,16列

代碼背後:

protected void Page_Load(object sender, EventArgs e) 
    { 

     int Id = 3; 

     Page.DataBind(); 
    } 

project.aspx.cs

<asp:EntityDataSource ID="ProjectEntityDataSource" runat="server" ConnectionString="name=DBEntities" DefaultContainerName="DBEntities" EnableFlattening="False" EntitySetName="projects" Select="it.[Id], it.[ClientId], it.[Name], it.[Description]" 
    Where="it.ClientId = <%# Id %> " > 
</asp:EntityDataSource> 

我曾嘗試: ASP.NET databinding/getting variables from codebehind

我知道這太容易了,但我無法弄清楚問題所在,爲什麼我無法綁定數據背後的代碼。謝謝!

回答

2

你可以採取下面的例子 幫助你的情況

protected void Page_Load(object sender, EventArgs e) 
{ 
    ProjectEntityDataSource.WhereParameters["Username"].DefaultValue ="3"; 
    Page.DataBind(); 
} 

ASPX

<asp:EntityDataSource ID="ProjectEntityDataSource" runat="server" 
    ConnectionString="name=DBEntities" DefaultContainerName="DBEntities" 
    EnableFlattening="False" EntitySetName="projects" Select="it.[Id], it.[ClientId], 
    it.[Name], it.[Description]" Where="it.ClientId = @Username"> 
     <WhereParameters> 
     <asp:Parameter Name="Username" Type="String" /> 
    </WhereParameters> 
</asp:EntityDataSource> 
1

改變這樣的.....它的工作我想......

Where='<%#"it.ClientId =" + Id.ToString %> ' 
2
<asp:EntityDataSource ID="ProjectEntityDataSource" runat="server" 
    ConnectionString="name=DBEntities" DefaultContainerName="DBEntities" 
    EnableFlattening="False" EnableInsert="True" EnableUpdate="True"  
    EntitySetName="projects" Where="it.ClientId= @Id" > 
    <WhereParameters> 
     <asp:QueryStringParameter Name="Id" Type="Int32" QueryStringField="Id" /> 
    </WhereParameters> 
</asp:EntityDataSource> 

試試看代碼。