Monday, April 25, 2011

Pass values in querystring with the hyperlink field inside the gridview

Hi,
I got the requirement to pass the two values in the form of query string of the hyperlink field in the grid view.One parameter is fron the database and another one is server side value.
Here is the solution for the above requirement.
FirstPage:
<%@ Page Language="C#"  %>
 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
 
    public string Name = "Prabhakara";
 
    public string GetURL(object productName)
    {
        string url = string.Empty;
        url = string.Format("Testing.aspx?ProductName={0}&Name={1}", productName.ToString(), Name);
        return url;
    }
</script>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:GridView ID="Gridview1" runat="server" DataSourceID="SqlDataSource1" DataKeyNames="ProductID"
            AllowPaging="True" AutoGenerateColumns="False">
            <Columns>
                <asp:BoundField HeaderText="ProductID" DataField="ProductID" ReadOnly="True" SortExpression="ProductID" />
                <asp:TemplateField>
                    <ItemTemplate>
                        <asp:HyperLink ID="hlMenuItem" runat="server" NavigateUrl='<%# GetURL(DataBinder.Eval(Container.DataItem, "ProductName")) %>'
                            Text='<%# DataBinder.Eval(Container.DataItem, "ProductName")%>'>
                        </asp:HyperLink>
                    </ItemTemplate>
                </asp:TemplateField>
            </Columns>
        </asp:GridView>
        <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:NorthwindConnectionString %>"
            SelectCommand="SELECT [ProductID], [ProductName] FROM [Alphabetical list of products]">
        </asp:SqlDataSource>
        <asp:Label ID="Label1" runat="server" Text="<%= Name %>"></asp:Label>
    </div>
    </form>
</body>
</html>
TestingPage:

<%@ Page Language="C#" %>
 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
 
    protected void btnBack_Click(object sender, EventArgs e)
    {
        Response.Redirect("HyperLinkExample.aspx");
    }
 
    protected void Page_Load(object sender, EventArgs e)
    {
         Label1.Text = Request.QueryString["ProductName"].ToString() + " and " + Request.QueryString["Name"].ToString();
    }
</script>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
        <br />
        <asp:Button ID="btnBack" runat="server" Text="Back" OnClick="btnBack_Click" />
    </div>
    </form>
</body>
</html>


HappyCoding....

Friday, April 8, 2011

Gridview update with sqldatasource using stored procedure

Hi,
Here i have a complete example of how to use the sqldatasource and gridview to update the records using the stored procedure.
Aspx page with code:
<%@ Page Language="C#" %>
 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
 
    protected void grvEmployees_RowUpdating(object sender, GridViewUpdateEventArgs e)
    {
        string employeeID = grvEmployees.DataKeys[e.RowIndex].Value.ToString();
 
        string gender = ((DropDownList)grvEmployees.Rows[e.RowIndex].FindControl("DropDownList1")).SelectedValue.ToString();
 
        empDataSource.UpdateParameters["Gender"].DefaultValue = gender;
        empDataSource.UpdateParameters["EmployeeID"].DefaultValue = employeeID.ToString();
        empDataSource.Update();
    }
</script>
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
    <title>Dropdownlist in EditItemTemplate</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:GridView ID="grvEmployees" runat="server" AutoGenerateColumns="False" DataKeyNames="EmployeeID"
            DataSourceID="empDataSource" AllowPaging="true" PageSize="10" AutoGenerateEditButton="True"
            OnRowUpdating="grvEmployees_RowUpdating">
            <Columns>
                <asp:TemplateField>
                    <ItemTemplate>
                        <%# Container.DataItemIndex + 1 %>
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:TemplateField HeaderText="EmployeeID" InsertVisible="False" SortExpression="EmployeeID">
                    <ItemTemplate>
                        <asp:Label ID="Label1" runat="server" Text='<%# Bind("EmployeeID") %>'></asp:Label>
                    </ItemTemplate>
                    <EditItemTemplate>
                        <asp:Label ID="Label1" runat="server" Text='<%# Eval("EmployeeID") %>'></asp:Label>
                    </EditItemTemplate>
                </asp:TemplateField>
                <asp:TemplateField HeaderText="Gender" SortExpression="Gender">
                    <ItemTemplate>
                        <asp:Label ID="Label2" runat="server" Text='<%# Bind("Gender") %>'></asp:Label>
                    </ItemTemplate>
                    <EditItemTemplate>
                        <asp:DropDownList ID="DropDownList1" runat="server" SelectedValue='<%# DataBinder.Eval(Container.DataItem,"Gender") %>'>
                            <asp:ListItem Value="M">M</asp:ListItem>
                            <asp:ListItem Value="F">F</asp:ListItem>
                        </asp:DropDownList>
                    </EditItemTemplate>
                </asp:TemplateField>
            </Columns>
        </asp:GridView>
 
    </div>
    <asp:SqlDataSource ID="empDataSource" runat="server" ConnectionString="<%$ ConnectionStrings:AdventureWorksConnectionString %>"
        SelectCommand="SELECT [EmployeeID], [Gender] FROM [AdventureWorks].[HumanResources].[Employee]"
        UpdateCommand="[HumanResources].[dbo.uspUpdateEmployeeGender]"
        UpdateCommandType="StoredProcedure">
        <UpdateParameters>
            <asp:Parameter Type="Char" Name="Gender"></asp:Parameter>
            <asp:Parameter Name="EmployeeID"></asp:Parameter>
        </UpdateParameters>
    </asp:SqlDataSource>
    </form>
</body>
</html>

Srored procedure:

USE [AdventureWorks]GO/****** Object: StoredProcedure [HumanResources].[dbo.uspUpdateEmployeeGender] Script Date: 04/08/2011 12:34:21 ******/SET
GO
SET
GO ANSI_NULLS ON QUOTED_IDENTIFIER ON-- =============================================
-- Author: <Author,,Name>
-- Create date: <Create Date,,>
-- Description: <Description,,>
-- =============================================CREATE
@EmployeeID [int]
@Gender [nchar] PROCEDURE [HumanResources].[dbo.uspUpdateEmployeeGender], (1) AS
BEGIN
UPDATE [HumanResources].[Employee] SET [Gender] = @Gender WHERE [EmployeeID] = @EmployeeID;END
GO
Happy coding...