yeasir007

Showing posts with label GridView. Show all posts
Showing posts with label GridView. Show all posts

Tuesday, December 04, 2012

Search in gridview in asp.net

Search in gridview in asp.net

Search Item in  Gridview in asp.net : 

download source code : download
demo:




Search in asp.net gridView is nothing but apply filterExpression and add filter Parameter with control id in gridview datasource. Suppose my gridview datasource id is "odsBonusDetails" and a search text box is "txtSearch". Let suppose we want to search grid by employee name which data field id is "strEmployeeName" and that's why i used filter expression "strEmployeeNamelike '%{0}%'" .
     

<asp:ObjectDataSource ID="odsBonusDetails" runat="server" OldValuesParameterFormatString="original_{0}"
  SelectMethod="GetEmployeesBonusDetails" TypeName="SearchingGrid.DAL.Gateway.BonusDetails_DLL"
  FilterExpression="strEmployeeNamelike '%{0}%'">
  <FilterParameters>
  <asp:ControlParameter Name="strEmployeeName" ControlID="txtSearch" PropertyName="Text" />
  </FilterParameters>
  </asp:ObjectDataSource>

If you want to add more data key for searching that should be like that.
<asp:ObjectDataSource ID="odsBonusDetails" runat="server" OldValuesParameterFormatString="original_{0}"
  SelectMethod="GetEmployeesBonusDetails" TypeName="SearchingGrid.DAL.Gateway.BonusDetails_DLL"
  FilterExpression="strEmployeeName like '%{0}%' or strUnitName like '%{0}%'">
  <FilterParameters>
  <asp:ControlParameter Name="strEmployeeName" ControlID="txtSearch" PropertyName="Text" />
  <asp:ControlParameter Name="strUnitName" ControlID="txtSearch" PropertyName="Text" />
  </FilterParameters>
 </asp:ObjectDataSource>

For random searching due to key up i have added following code bellow in page load. And I have also added some other code for highlighting searched text. 
txtSearch.Attributes.Add("onkeyup", "setTimeout('__doPostBack(\'" + txtSearch.ClientID.Replace("_", "$") + "\',\'\')', 0);");

It's very easy to implement. Just download source code and try to implement.Thank you.

Monday, October 15, 2012

Insert, Update, Delete in C# ASP.NET Gridview With XML Database

Insert, Update, Delete in C# ASP.NET Gridview With XML Database

Add Edit Delete in Gridview with XML database:

Source code Download link:download source code
 .aspx code:





<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
<title>Untitled Page</title>
<style type="text/css">
    .Gridview
    {
        font-family: Verdana;
        font-size: 10pt;
        font-weight: normal;
        color: black;
        text-align:justify;
    }
</style>
<script type="text/javascript">
    function ConfirmationBox(username) {

        var result = confirm('Are you sure you want to delete ' + username + ' Details?');
        if (result) {

            return true;
        }
        else {
            return false;
        }
    }
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
    <asp:GridView ID="dgvStudentDetails" DataKeyNames="intStudentId,strName" 
        runat="server" AutoGenerateColumns="False"
        CssClass="Gridview" HeaderStyle-BackColor="#61A6F8" ShowFooter="True" HeaderStyle-Font-Bold="true"
        HeaderStyle-ForeColor="White" OnRowCancelingEdit="dgvStudentDetails_RowCancelingEdit"
        OnRowDeleting="dgvStudentDetails_RowDeleting" 
        OnRowEditing="dgvStudentDetails_RowEditing" OnRowUpdating="dgvStudentDetails_RowUpdating"
        OnRowCommand="dgvStudentDetails_RowCommand" CellPadding="4" 
        ForeColor="#333333" GridLines="None" 
        onrowdatabound="dgvStudentDetails_RowDataBound">
        <AlternatingRowStyle BackColor="White" />
        <Columns>
            <asp:TemplateField>
                <EditItemTemplate>
                    <asp:ImageButton ID="imgbtnUpdate" CommandName="Update" runat="server" ImageUrl="~/Images/update.jpg"
                        ToolTip="Update" Height="20px" Width="20px" />
                    <asp:ImageButton ID="imgbtnCancel" runat="server" CommandName="Cancel" ImageUrl="~/Images/Cancel.jpg"
                        ToolTip="Cancel" Height="20px" Width="20px" />
                </EditItemTemplate>
                <ItemTemplate>
                    <asp:ImageButton ID="imgbtnEdit" CommandName="Edit" runat="server" ImageUrl="~/Images/Edit.jpg"
                        ToolTip="Edit" Height="20px" Width="20px" />
                    <asp:ImageButton ID="imgbtnDelete" CommandName="Delete" Text="Edit" runat="server"
                        ImageUrl="~/Images/delete.jpg" ToolTip="Delete" Height="20px" Width="20px" />
                </ItemTemplate>
                <FooterTemplate>
                    <asp:ImageButton ID="imgbtnAdd" runat="server" ImageUrl="~/Images/AddNewitem.jpg"
                        CommandName="AddNew" Width="30px" Height="30px" ToolTip="Add new User" ValidationGroup="validaiton" />
                </FooterTemplate>
            </asp:TemplateField>
            <asp:TemplateField HeaderText="ID">
                <EditItemTemplate>
                    <asp:Label ID="lbleditStudentId" runat="server" Text='<%#Eval("intStudentId") %>' />
                </EditItemTemplate>
                <ItemTemplate>
                    <asp:Label ID="lblitemStudentId" runat="server" Text='<%#Eval("intStudentId") %>' />
                </ItemTemplate>
                <FooterTemplate>
                    <asp:TextBox ID="txtftrStudentId" runat="server" />
                    <asp:RequiredFieldValidator ID="rfvStudentId" runat="server" ControlToValidate="txtftrStudentId"
                        Text="*" ValidationGroup="validaiton" />
                </FooterTemplate>
                <ItemStyle Width="100px" VerticalAlign="Middle" />
            </asp:TemplateField>
            <asp:TemplateField HeaderText="Name">
                <EditItemTemplate>
                    <asp:TextBox ID="txtName" runat="server" Text='<%#Eval("strName") %>' />
                </EditItemTemplate>
                <ItemTemplate>
                    <asp:Label ID="lblName" runat="server" Text='<%#Eval("strName") %>' />
                </ItemTemplate>
                <FooterTemplate>
                    <asp:TextBox ID="txtftrName" runat="server" />
                    <asp:RequiredFieldValidator ID="rfvName" runat="server" ControlToValidate="txtftrName"
                        Text="*" ValidationGroup="validaiton" />
                </FooterTemplate>
                <ItemStyle Width="150px" VerticalAlign="Middle" />
            </asp:TemplateField>
            <asp:TemplateField HeaderText="Department">
                <EditItemTemplate>
                    <asp:TextBox ID="txtDepartment" runat="server" Text='<%#Eval("strDepartment") %>' />
                </EditItemTemplate>
                <ItemTemplate>
                    <asp:Label ID="lblDepartment" runat="server" Text='<%#Eval("strDepartment") %>' />
                </ItemTemplate>
                <FooterTemplate>
                    <asp:TextBox ID="txtftrDepartment" runat="server" />
                    <asp:RequiredFieldValidator ID="rfvDepartment" runat="server" ControlToValidate="txtftrDepartment"
                        Text="*" ValidationGroup="validaiton" />
                </FooterTemplate>
                <ItemStyle Width="100px" VerticalAlign="Middle" />
            </asp:TemplateField>
        </Columns>
        <EditRowStyle BackColor="#2461BF" />
        <FooterStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
        <HeaderStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White"></HeaderStyle>
        <PagerStyle BackColor="#2461BF" ForeColor="White" HorizontalAlign="Center" />
        <RowStyle BackColor="#EFF3FB" />
        <SelectedRowStyle BackColor="#D1DDF1" Font-Bold="True" ForeColor="#333333" />
        <SortedAscendingCellStyle BackColor="#F5F7FB" />
        <SortedAscendingHeaderStyle BackColor="#6D95E1" />
        <SortedDescendingCellStyle BackColor="#E9EBEF" />
        <SortedDescendingHeaderStyle BackColor="#4870BE" />
    </asp:GridView>
</div>
<div>
</div>
</form>
</body>
</html>



C# Code:

#region Event
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            BindGridViewWithXml();
        }
    }
    protected void BindGridViewWithXml()
    {
        DataSet odsXML = new DataSet();
        odsXML.ReadXml(Server.MapPath("DB_StudentInfo_XML.xml"));
        dgvStudentDetails.DataSource = odsXML;
        dgvStudentDetails.DataBind();
        dgvStudentDetails.ShowFooter = true;
    }
    protected void dgvStudentDetails_RowEditing(object sender, GridViewEditEventArgs e)
    {
        dgvStudentDetails.EditIndex = e.NewEditIndex;
        BindGridViewWithXml();
    }
    protected void dgvStudentDetails_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
    {
        dgvStudentDetails.EditIndex = -1;
        BindGridViewWithXml();
    }
    protected void dgvStudentDetails_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            //getting username from particular row
            string username = Convert.ToString(DataBinder.Eval(e.Row.DataItem, "strName"));
            //identifying the control in gridview
            ImageButton lnkbtnresult = (ImageButton)e.Row.FindControl("imgbtnDelete");
            //raising javascript confirmationbox whenver user clicks on link button
            if (lnkbtnresult != null)
            {
                lnkbtnresult.Attributes.Add("onclick", "javascript:return ConfirmationBox('" + username + "')");
            }
        }
    }
    protected void dgvStudentDetails_RowUpdating(object sender, GridViewUpdateEventArgs e)
    {
        try
        {
            TextBox txtStudentName = (TextBox)dgvStudentDetails.Rows[e.RowIndex].FindControl("txtName");
            TextBox txtDepartment = (TextBox)dgvStudentDetails.Rows[e.RowIndex].FindControl("txtDepartment");

            int index = dgvStudentDetails.Rows[e.RowIndex].DataItemIndex;
            BindGridViewWithXml();

            DataSet odsDataSource = (DataSet)dgvStudentDetails.DataSource;
            odsDataSource.Tables[0].Rows[index]["strName"] = txtStudentName.Text;
            odsDataSource.Tables[0].Rows[index]["strDepartment"] = txtDepartment.Text;

            odsDataSource.WriteXml(Server.MapPath("DB_StudentInfo_XML.xml"));

            dgvStudentDetails.EditIndex = -1;
            BindGridViewWithXml();
        }
        catch(Exception ex)
        {
            ScriptManager.RegisterStartupScript(Page, typeof(Page), "StartupScript", "alert('" + ex.Message + "');", true);
        }
    }
    protected void dgvStudentDetails_RowDeleting(object sender, GridViewDeleteEventArgs e)
    {
        BindGridViewWithXml();

        DataSet odsDataSource = (DataSet)dgvStudentDetails.DataSource;
        odsDataSource.Tables[0].Rows[dgvStudentDetails.Rows[e.RowIndex].DataItemIndex].Delete();
        odsDataSource.WriteXml(Server.MapPath("DB_StudentInfo_XML.xml"));

        BindGridViewWithXml();
    }
    protected void dgvStudentDetails_RowCommand(object sender, GridViewCommandEventArgs e)
    {
       if(e.CommandName.Equals("AddNew"))
       {
           bool ysnStudentExist = false;

           int intStudentId = Convert.ToInt32(dgvStudentDetails.DataKeys[0].Values["intStudentId"].ToString());
           TextBox txtStudentName = (TextBox)dgvStudentDetails.FooterRow.FindControl("txtftrName");
           TextBox txtDepartment = (TextBox)dgvStudentDetails.FooterRow.FindControl("txtftrDepartment");
           TextBox txtStudentId = (TextBox)dgvStudentDetails.FooterRow.FindControl("txtftrStudentId");

           for (int index = 0; index < dgvStudentDetails.Rows.Count; index++)
           {
               Label lblStudentId = (Label)dgvStudentDetails.Rows[index].FindControl("lblitemStudentId");

               if (txtStudentId.Text == lblStudentId.Text)
               {
                   ysnStudentExist = true;
               }
           }

           if (ysnStudentExist)
           {
               ScriptManager.RegisterStartupScript(Page, typeof(Page), "StartUpScript", "alert('Sorry!Student Id has already been exist.Please check your existing loan schedule.');", true);
               return;
           }

           CreateXmlData(txtStudentId.Text,txtStudentName.Text,txtDepartment.Text);
           BindGridViewWithXml();
       }
    }
    #endregion
    #region Internal Method
    private void CreateXmlData(string strStudentId, string strStudentName, string strDepartment)
    {
        XmlDocument doc = new XmlDocument();
        if (System.IO.File.Exists(Server.MapPath("DB_StudentInfo_XML.xml")))
        {
            doc.Load(Server.MapPath("DB_StudentInfo_XML.xml"));
            XmlNode rootNode = doc.SelectSingleNode("StudentDetails");
            XmlNode addItem = CreateItemNode(doc, strStudentId, strStudentName, strDepartment);
            rootNode.AppendChild(addItem);
        }
        else
        {
            XmlNode xmldeclerationNode = doc.CreateXmlDeclaration("1.0", "", "");
            doc.AppendChild(xmldeclerationNode);
            XmlNode rootNode = doc.CreateElement("StudentDetails");
            XmlNode addItem = CreateItemNode(doc, strStudentId, strStudentName, strDepartment);
            rootNode.AppendChild(addItem);
            doc.AppendChild(rootNode);
        }
        doc.Save(Server.MapPath("DB_StudentInfo_XML.xml"));
    }
    private XmlNode CreateItemNode(XmlDocument doc, string strStudentId, string strStudentName, string strDepartment)
    {

        XmlNode node = doc.CreateElement("StudentInfo");

        XmlAttribute atrStudentId = doc.CreateAttribute("intStudentId");
        atrStudentId.Value = strStudentId; // loan application id

        XmlAttribute atrStudentName = doc.CreateAttribute("strName");
        atrStudentName.Value = strStudentName;

        XmlAttribute atrDepartment = doc.CreateAttribute("strDepartment");
        atrDepartment.Value = strDepartment;

        node.Attributes.Append(atrStudentId);
        node.Attributes.Append(atrStudentName);
        node.Attributes.Append(atrDepartment);
        return node;
    }
    #endregion
}