传递参数在这种情况下不起作用

时间:2012-10-22 19:30:14

标签: c# asp.net

我有以下内容,似乎工作正常:

在我的.cs文件中:

 protected void menu_ItemClick(object sender, Telerik.Web.UI.RadMenuEventArgs e)
 {
    string value = (e.Item.Value).ToString();
    WtrClientDS.SelectCommand = "SELECT * from Prog where  ProgId = " + value;
 }

在.aspx文件中:

<asp:SqlDataSource ID="WtrClientDS" runat="server" ConnectionString="<%$ ConnectionStrings:ProgSQL %>">

</asp:SqlDataSource>

如上所述,我上面所做的工作正常,但我不认为这是最佳做法。

相反,我喜欢在.aspx文件中使用select命令,如下所示但不起作用:

.cs文件内部

     protected void menu_ItemClick(object sender, Telerik.Web.UI.RadMenuEventArgs e)
     {

          string value = (e.Item.Value).ToString();
          // changed below per input from user but still does not work. 
          WtrClientDS.SelectParameters.Add(new Parameter("LocId", System.TypeCode.String, value)); 
     }

.aspx文件内部:

      <asp:SqlDataSource ID="WtrClientDS" runat="server" ConnectionString="<%$ ConnectionStrings:ProgSQL %>" 
      SelectCommand =  "SELECT * from Prog where  ProgId = @LocId">

    <SelectParameters> 
       <asp:Parameter Name="LocId" Type="String"  /> 
    </SelectParameters>
 </asp:SqlDataSource>

我上面的内容根本不起作用。不会给出错误但是根本不起作用。 我也想知道哪种方法/理想的方法更适合。

1 个答案:

答案 0 :(得分:1)

尝试使用新的SQLDataSource

protected void menu_ItemClick(object sender, Telerik.Web.UI.RadMenuEventArgs e)
 {
      string value = (e.Item.Value).ToString();
      string strConn = ConfigurationManager.ConnectionStrings["ConnectionStrings:ProgSQL"].ConnectionString; 

      SqlDataSource WtrClientDS = new SqlDataSource(); 
      WtrClientDS.ConnectionString = strConn;
      WtrClientDS.SelectCommand = "SELECT * from Prog where ProgId = @LocId"
      WtrClientDS.SelectParameters.Add(new Parameter("LocId", System.TypeCode.String, value));

      //refresh your control
      WtrClients.DataSource = WtrClientDS.Select(DataSourceSelectArguments.Empty);
      WtrClients.Rebind();
 }