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.

4 Answers 4

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>
Sign up to request clarification or add additional context in comments.

Comments

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
}

Comments

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]

Comments

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();

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.