Search This Blog

Saturday, January 18, 2014

Repeater Example - Sharepoint object Model

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div class="box-container">
        <div class="box-left">
            <asp:Repeater ID="RepeaterEmployement" runat="server" OnItemCommand="RepeaterEmployement_ItemCommand">
                <ItemTemplate>
                    <table>
                        <tr>
                            <td colspan="2">
                                Highest degree
                            </td>
                        </tr>
                        <tr>
                            <td>
                                Employment status
                            </td>
                            <td>
                                <asp:TextBox ID="txtEmployeeName" runat="server" CssClass="txtbox" Text='<%# DataBinder.Eval(Container.DataItem, "EmployeeName") %>'></asp:TextBox>
                            </td>
                        </tr>
                        <tr>
                            <td>
                                years of experience
                            </td>
                            <td>
                                <asp:TextBox ID="txtYearofExp" runat="server" CssClass="txtbox" Text='<%# DataBinder.Eval(Container.DataItem, "YearofExp") %>'></asp:TextBox>
                            </td>
                        </tr>
                        <tr>
                            <td>
                                current employer
                            </td>
                            <td>
                                <asp:TextBox ID="txtPositionheld" runat="server" CssClass="txtbox" Text='<%# DataBinder.Eval(Container.DataItem, "PosisitonHeld") %>'></asp:TextBox></li>
                            </td>
                        </tr>
                        <tr>
                            <td colspan="2">
                                <asp:Button ID="btnAddAnother" Font-Bold="true" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "Button") %>'
                                    CommandName='<%# DataBinder.Eval(Container.DataItem, "Button") %>' />
                            </td>
                        </tr>
                    </table>
                </ItemTemplate>
            </asp:Repeater>
        </div>
        <div class="box-right">
            <asp:Repeater ID="RepeaterEducational" runat="server" OnItemCommand="RepeaterEducational_ItemCommand">
                <ItemTemplate>
                    <table>
                        <tr>
                            <td colspan="2">
                                School / Institute*
                            </td>
                        </tr>
                        <tr>
                            <td>
                                Title
                            </td>
                            <td>
                                <asp:TextBox ID="txtEducationalTitle" runat="server" CssClass="txtbox" Text='<%# DataBinder.Eval(Container.DataItem, "Title") %>'></asp:TextBox></li>
                            </td>
                        </tr>
                        <tr>
                            <td>
                                Previous employment?*
                            </td>
                            <td>
                                <asp:DropDownList ID="ddlCity" CssClass="styled" runat="server">
                                    <asp:ListItem Value="0" Text="--Select--"></asp:ListItem>
                                    <asp:ListItem Value="1" Text="Yes"></asp:ListItem>
                                    <asp:ListItem Value="2" Text="No"></asp:ListItem>
                                </asp:DropDownList>
                            </td>
                        </tr>
                        <tr>
                            <td>
                                Current title
                            </td>
                            <td>
                                <asp:TextBox ID="txtHighestdegree" runat="server" CssClass="txtbox" Text='<%# DataBinder.Eval(Container.DataItem, "Degree") %>'></asp:TextBox></li>
                            </td>
                        </tr>
                        <tr>
                            <td>
                                Number
                            </td>
                            <td>
                                <asp:TextBox ID="txtUniversity" runat="server" CssClass="txtbox" Text='<%# DataBinder.Eval(Container.DataItem, "University") %>'></asp:TextBox></li>
                            </td>
                        </tr>
                        <tr>
                            <td colspan="2">
                                <asp:Button ID="btnAddAnother" Font-Bold="true" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "Button") %>'
                                    CommandName='<%# DataBinder.Eval(Container.DataItem, "Button") %>' />
                            </td>
                        </tr>
                    </table>
                </ItemTemplate>
            </asp:Repeater>
        </div>
    </div>
    </form>
</body>
</html>

 -----------------------------------------.CS------------------------------
public partial class WebForm2 : System.Web.UI.Page
    {
        DataSet dsEmployement, dsEducational = null; //dummy dataset use for repeater
        DataTable tbEmployement, tbEducational = null; //dummy table for dataset
      
        protected void Page_Load(object sender, EventArgs e)
        {
            #region Dynamic Field generation
           //Intitalization
            dsEducational = new DataSet();
            tbEducational = new DataTable();
            dsEmployement = new DataSet();
            tbEmployement = new DataTable();
            //Only first time of page load
            if (!Page.IsPostBack)
            {
                AddEducationalColumns();
                AddEmployementColumns();
              
                //Add dummy row to table
                tbEducational.Rows.Add("", "", "", "+");
                tbEmployement.Rows.Add("", "", "", "+");
                BindWithEducationalRepeater();
                BindWithEmployementRepeater();
            }
            #endregion
        }
        #region Dynamic Field generation helper
        private void AddEducationalColumns()
        {
            //Add 3 dummy coloumn, this can be increase on our need basis
            tbEducational.Columns.Add("Title");
            tbEducational.Columns.Add("Degree");
            tbEducational.Columns.Add("University");
            tbEducational.Columns.Add("Button");
        }
        private void AddEmployementColumns()
        {
            //Add 3 dummy coloumn, this can be increase on our need basis
            tbEmployement.Columns.Add("EmployeeName");
            tbEmployement.Columns.Add("YearofExp");
            tbEmployement.Columns.Add("PosisitonHeld");
            tbEmployement.Columns.Add("Button");
        }
        protected void RepeaterEducational_ItemCommand(object source, RepeaterCommandEventArgs e)
        {

            int Total = RepeaterEducational.Items.Count; //get total items in repeater
            if (e.CommandName == "+")
            {
                Total = Total + 1; //increase 1 because of add

                AddEducationalColumns();

                foreach (RepeaterItem item in RepeaterEducational.Items)
                {
                    //getting the values of user entered fields
                    string title = ((TextBox)item.FindControl("txtEducationalTitle")).Text;
                    string degree = ((TextBox)item.FindControl("txtHighestdegree")).Text;
                    string University = ((TextBox)item.FindControl("txtUniversity")).Text;
                    Button btnAdd = ((Button)item.FindControl("btnAddAnother"));

                    //now change button text to remove, and save user entered values in table
                    tbEducational.Rows.Add(title, degree, University, "x");
                }

                //Add dummy row, because we need to increase
                tbEducational.Rows.Add("", "", "", "+");

                BindWithEducationalRepeater();
            }
            else if (e.CommandName == "x")
            {
                Total = Total - 1;
                tbEducational.Columns.Add("Title");
                tbEducational.Columns.Add("Degree");
                tbEducational.Columns.Add("University");
                tbEducational.Columns.Add("Button");

                foreach (RepeaterItem item in RepeaterEducational.Items)
                {
                    Button btnAdd = ((Button)item.FindControl("btnAddAnother"));
                    if (btnAdd != e.CommandSource) //the current row on which user click will removed
                    {
                        string EducationalTitle = ((TextBox)item.FindControl("txtEducationalTitle")).Text;
                        string Highestdegree = ((TextBox)item.FindControl("txtHighestdegree")).Text;
                        string University = ((TextBox)item.FindControl("txtUniversity")).Text;
                        if (btnAdd.Text == "x")
                        {
                            tbEducational.Rows.Add(EducationalTitle, Highestdegree, University, "x");
                        }
                        else
                        {
                            tbEducational.Rows.Add(EducationalTitle, Highestdegree, University, "+");
                        }
                    }
                }
                BindWithEducationalRepeater();
            }
        }
        protected void RepeaterEmployement_ItemCommand(object source, RepeaterCommandEventArgs e)
        {
          
            int Total = RepeaterEmployement.Items.Count; //get total items in repeater
            if (e.CommandName == "+")
            {
                Total = Total + 1; //increase 1 because of add

                AddEmployementColumns();

                foreach (RepeaterItem item in RepeaterEmployement.Items)
                {
                    //getting the values of user entered fields
                    string EmployeeName = ((TextBox)item.FindControl("txtEmployeeName")).Text;
                    string YearofExp = ((TextBox)item.FindControl("txtYearofExp")).Text;
                    string Positionheld = ((TextBox)item.FindControl("txtPositionheld")).Text;
                    Button btnAdd = ((Button)item.FindControl("btnAddAnother"));
                    //now change button text to remove, and save user entered values in table
                    tbEmployement.Rows.Add(EmployeeName, YearofExp, Positionheld, "x");
                }

                //Add dummy row, because we need to increase
                tbEmployement.Rows.Add("", "", "", "+");

                BindWithEmployementRepeater();
            }
            else if (e.CommandName == "x")
            {
                Total = Total - 1;
                tbEmployement.Columns.Add("EmployeeName");
                tbEmployement.Columns.Add("YearofExp");
                tbEmployement.Columns.Add("PosisitonHeld");
                tbEmployement.Columns.Add("Button");

                foreach (RepeaterItem item in RepeaterEmployement.Items)
                {
                    Button btnAdd = ((Button)item.FindControl("btnAddAnother"));
                    if (btnAdd != e.CommandSource) //the current row on which user click will removed
                    {
                        string EmployeeName = ((TextBox)item.FindControl("txtEmployeeName")).Text;
                        string YearofExp = ((TextBox)item.FindControl("txtYearofExp")).Text;
                        string Positionheld = ((TextBox)item.FindControl("txtPositionheld")).Text;

                        if (btnAdd.Text == "x")
                        {
                            tbEmployement.Rows.Add(EmployeeName, YearofExp, Positionheld, "x");
                        }
                        else
                        {
                            tbEmployement.Rows.Add(EmployeeName, YearofExp, Positionheld, "+");
                        }
                    }

                }

                BindWithEmployementRepeater();
            }
        }

        private void BindWithEducationalRepeater()
        {
            //add this table to dataset
            dsEducational.Tables.Add(tbEducational);
            //bind this dataset to repeater
            RepeaterEducational.DataSource = dsEducational;
            RepeaterEducational.DataBind();
        }
        private void BindWithEmployementRepeater()
        {
            //add this table to dataset
            dsEmployement.Tables.Add(tbEmployement);
            //bind this dataset to repeater
            RepeaterEmployement.DataSource = dsEmployement;
            RepeaterEmployement.DataBind();
        }

        #endregion
    }
------------------------------------------Get Repeater value-----------------
//get the RepeaterEmployement value
                foreach (RepeaterItem item in RepeaterEducational.Items)
                {
                    educationList.Add(new EducationBL { Highestdegree = ((TextBox)item.FindControl("txtHighestdegree")).Text, Educationtitle = ((TextBox)item.FindControl("txtEducationalTitle")).Text, University = ((TextBox)item.FindControl("txtUniversity")).Text });
                }
                //get the RepeaterEmployement value
                foreach (RepeaterItem item in RepeaterEmployement.Items)
                {
                    employementList.Add(new EmployementBL { Employername = ((TextBox)item.FindControl("txtEmployeeName")).Text, Lastpositionheld = ((TextBox)item.FindControl("txtYearofExp")).Text, Yearsofservice = ((TextBox)item.FindControl("txtPositionheld")).Text });

                }