【问题标题】:How to pass property value in SqlDataSource selectCommand where conditon?如何在SqlDataSource select Command where条件中传递属性值?
【发布时间】:2012-04-27 08:36:55
【问题描述】:

我的 page2.aspx.cs 页面中有一个属性

public int? Id
{
        get
        {
            if (ViewState[Page1.Id] != null)
                return Convert.ToInt32(ViewState[Page1.Id]);
            else return null;
        }
        set
        {
            ViewState[Id] = value;
        }
    }

我正在使用 asp: 数据源:

<asp:SqlDataSource ID="SqlDataSourceGridView" runat="server" 
   ProviderName="System.Data.SqlClient" 
   SelectCommand="SELECT [Name],[Address] FROM [Table_Emp] where Id = need to pass property value >" 
   OnSelecting="SqlDataSourceGridView_Selecting">
</asp:SqlDataSource>

我想在 where 条件下传递 Id。怎么可能。

请有人帮助我。

【问题讨论】:

    标签: c# asp.net sqldatasource


    【解决方案1】:

    来看看

     <asp:sqlDataSource ID="EmployeeDetailsSqlDataSource" 
       SelectCommand="SELECT EmployeeID, LastName, FirstName FROM Employees WHERE EmployeeID = @EmpID"
    
       InsertCommand="INSERT INTO Employees(LastName, FirstName) VALUES (@LastName, @FirstName); 
                      SELECT @EmpID = SCOPE_IDENTITY()"
       UpdateCommand="UPDATE Employees SET LastName=@LastName, FirstName=@FirstName 
                        WHERE EmployeeID=@EmployeeID"
       DeleteCommand="DELETE Employees WHERE EmployeeID=@EmployeeID"
    
       ConnectionString="<%$ ConnectionStrings:NorthwindConnection %>"
       OnInserted="EmployeeDetailsSqlDataSource_OnInserted"
       RunAt="server">
    
       <SelectParameters>
         <asp:Parameter Name="EmpID" Type="Int32" DefaultValue="0" />
       </SelectParameters>
    
       <InsertParameters>
         <asp:Parameter Name="EmpID" Direction="Output" Type="Int32" DefaultValue="0" />
       </InsertParameters>
    
     </asp:sqlDataSource>
    

    【讨论】:

      【解决方案2】:

      1) 插入带有参数名称的占位符,如 @Id 给您选择查询

      2) 将Id 参数的参数说明添加到SqlDataSource 的&lt;SelectParameter&gt; 部分

      <asp:SqlDataSource ID="SqlDataSourceGridView" runat="server" 
           ProviderName="System.Data.SqlClient" 
           SelectCommand="SELECT [Name],[Address] FROM [Table_Emp] where Id = @Id" 
           OnSelecting="SqlDataSourceGridView_Selecting">
      
          <SelectParameters>
               <asp:Parameter Name="Id" Type="Int32" />
          </SelectParameters>
      
      </asp:SqlDataSource>
      

      3) 在选择事件方法中将参数值放到命令中

      protected void SqlDataSourceGridView_Selecting(object sender, SqlDataSourceSelectingEventArgs e)
      {
          e.Command.Parameters["@Id"].Value = (int)(Id ?? 0); // nullable ind is not applicable here
      }
      

      【讨论】:

        【解决方案3】:

        你必须使用 SQLDataSource 下的 Node。

        看看这里:MSDN ReferenceTutorial

        <asp:SqlDataSource ID="SqlDataSourceGridView" runat="server" 
           ProviderName="System.Data.SqlClient" 
           SelectCommand="SELECT [Name],[Address] FROM [Table_Emp] where Id = need to pass property value >" 
           OnSelecting="SqlDataSourceGridView_Selecting">
        
           <SelectParameters>
             <asp:Parameter Name="ParameterName" />
           </SelectParameters>
        
        </asp:SqlDataSource>
        

        OT:您的属性 ID 有错误。您设置了 ViewState[Id] 但您尝试检索 视图状态[Page.id]

        【讨论】:

          【解决方案4】:

          您可以从后面的代码中进行设置。只需在您的 sql 数据源中定义一个选择参数,例如

              <asp:SqlDataSource ID="SqlDataSourceGridView" runat="server" 
             ProviderName="System.Data.SqlClient" 
             SelectCommand="SELECT [Name],[Address] FROM [Table_Emp] where Id =@id" 
             OnSelecting="SqlDataSourceGridView_Selecting">
            <SelectParameters>
                  <asp:Parameter Name="@id" Type="Int32" />
              </SelectParameters>
          

          然后在你后面的代码中你可以手动设置参数

          SqlDataSourceGridView.SelectParameters["@id"].DefaultValue = yourValue;
          Gridview1.DataBind();
          

          【讨论】:

            猜你喜欢
            • 2021-05-25
            • 1970-01-01
            • 2017-02-28
            • 1970-01-01
            • 1970-01-01
            • 2014-04-21
            • 1970-01-01
            • 2016-01-19
            • 1970-01-01
            相关资源
            最近更新 更多