4

I have a property in my page2.aspx.cs page

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

and I am using asp: data sourse:

<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>

I want to pass Id in my where condition. how is it possible.

Please some one help me.

Rocky
  • 4,454
  • 14
  • 64
  • 119

4 Answers4

4

Here, take a look

 <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>
Johnny_D
  • 4,592
  • 3
  • 33
  • 63
1

1) insert placeholder with parameter name like @Id to you select-query

2) Add parameter specification of your Id parameter to <SelectParameter> section of SqlDataSource

<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) in Selecting event method put parameter value to the command

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

You have to use Node under SQLDataSource.

Have a look here : MSDN Reference or Tutorial

<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 : you have an error on property Id. you set ViewState[Id] but you try to retrieve Viewstate[Page.id]

2GDev
  • 2,478
  • 1
  • 20
  • 32
0

You can set this from code behind. Just define a select parameter in your sql datasource like

    <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>

Then in your code behind you can set the parameter manually like

SqlDataSourceGridView.SelectParameters["@id"].DefaultValue = yourValue;
Gridview1.DataBind();
Zo Has
  • 12,599
  • 22
  • 87
  • 149