2012-05-17 20 views
4

我使用的SqlDataSource显示根据登录的用户记录,必须声明标量变量“@ LoggedInUser”。错误尝试参数添加到SqlDataSource的

​​

,并在页面加载我加入参数如下

protected void Page_Load(object sender, EventArgs e) 
     { 
      string user = HttpContext.Current.User.Identity.Name; 
      ModifyCustomerDataSource.SelectParameters.Clear(); 
      ModifyCustomerDataSource.SelectParameters.Add("@LoggedInUser", user.Trim()); 
     } 

时但它给我错误

Must declare the scalar variable "@LoggedInUser". 
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 

Exception Details: System.Data.SqlClient.SqlException: Must declare the scalar variable "@LoggedInUser". 

有人可以指出我哪里出错了。 由于

+0

这是使用sqldatasource的最佳实践吗?只是好奇。我正在解决不使用sqldatasource。如果你想要示例代码,请让我知道.. – AnandMohanAwasthi

+0

@AnandMohanAwasthi,我绑定这个数据到我的jqGrid,所以这对我来说更简单了,好吧没有太多的想法是最好的做法,你可以问富好吧关于它。示例代码将帮助我。谢谢 – freebird

回答

10

添加参数例如,当你不需要的@

ModifyCustomerDataSource.SelectParameters.Add("LoggedInUser", user.Trim()); 

查询中的@符号表示以下文本是参数的名称,但@不被视为参数名称的一部分。

+0

为我工作了很多。 – freebird

+1

因为今晚有太多时间和太多不愉快的话。 –

1
<asp:SqlDataSource ID="ModifyCustomerDataSource" SelectCommand="SELECT cApplicationNo,cFirstName,cMiddleName,cLastName,nTelNo,nMobileNo,cPanGirNo from Data_Customer_Log where [email protected]" ConnectionString="<%$ ConnectionStrings:CwizDataConnectionString %>" runat="server"> 

     <SelectParameters> 

      <asp:Parameter Name="LoggedInUser" /> 

     </SelectParameters> 

</asp:SqlDataSource> 

请确认您有在限定的SqlDataSource如SelectParameter样品如上所述。

您可以设置参数的值在两个方面:

ModifyCustomerDataSource.SelectParameters["LoggedInUser"].DefaultValue = "some value"; 

or 

ModifyCustomerDataSource.SelectParameters.Add("@LoggedInUser", user.Trim()); //@is must here with the parameter name 
+0

问题已解决,丰富的答案帮助。感谢您的答案。 – freebird

+0

ModifyCustomerDataSource.SelectParameters.Add(“@ LoggedInUser”,user.Trim()); ,没有工作,删除@为我工作 – freebird

+0

它的工作原因是你没有提到Aspx中的“LoggedInUser”的标签根据我的示例。 –