DataBound Repeater is losing it's datasource and values. Why is this happening?

I am trying to use a repeater to add datarows to a table based on whether or not the repeaters CheckBox Item is checked. For some reason, the repeaters values are being reset when I trigger the event to add the checked repeater items to the datatable.

Here's the code:

  //==================================================
  // OtherFeesDropDownList_SelectedIndexChanged()
  //==================================================
  protected void OtherFeesDropDownList_SelectedIndexChanged(object sender, EventArgs e)
  {
    // Removes the default "- Select" value from the DropDownList
    OtherFeesDropDownList.Items.Remove(sv.InvalidSelection);

    AddFeesButton.Visible = true;

    OtherFeesTable = CreateFeeTable(OtherFeesTable, "OtherFees");
    FillOtherFeesDataTable(OtherFeesTable, OtherFeesDropDownList.SelectedItem.Text);
    OtherFeesRepeater.DataSource = OtherFeesTable;
    OtherFeesRepeater.DataBind();
    sv.OtherFeesTable = OtherFeesTable;
  }

  //==================================================
  // AddFeesButton_Click()
  //==================================================
  protected void AddFeesButton_Click(object sender, EventArgs e)
  {
    DataRow dtRow;
   
    //If the SelectedFeesTable hasn't been initialized, initialize it
    if (SelectedFeesTable == null)
    {
      SelectedFeesTable = CreateFeeTable(SelectedFeesTable, "SelectedFees");
    }

    foreach (RepeaterItem ri in this.OtherFeesRepeater.Items)
    {
      CheckBox cb = ri.FindControl("FeeCheckBox") as CheckBox;
      if (cb != null && cb.Checked)
      {
        Label lblFeeID = ri.FindControl("FeeIDLabel") as Label;
        Label lblFeeGroup = ri.FindControl("FeeGroupLabel") as Label;
        Label lblComment = ri.FindControl("CommentLabel") as Label;
        Label lblPrice = ri.FindControl("PriceLabel") as Label;

        dtRow = SelectedFeesTable.NewRow();
        dtRow["FeeID"] = lblFeeID.Text;
        dtRow["FeeGroup"] = lblFeeGroup.Text;
        dtRow["Comment"] = lblComment.Text;
        dtRow["Price"] = lblPrice.Text;
        SelectedFeesTable.Rows.Add(dtRow);
      }
    }
    SelectedFeesRepeater.DataSource = SelectedFeesTable;
    SelectedFeesRepeater.DataBind();
    sv.SelectedFeesTable = SelectedFeesTable;
  }
LVL 1
tatton777Asked:
Who is Participating?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

aki4uCommented:
do you have in page_load event "if (Page.IsPostBack) return;"?

like this:

private void Page_Load(object sender, System.EventArgs e)
{
      if (Page.IsPostBack)
            return;
               //your code here
}
0
tatton777Author Commented:
I dont have any of the DataTable information in the Page_Load event, I am creating the tables in the two methods listed above and then storing them in session varialbes. Would it be helpful if I posted all code .cs and .aspx?

The thing I don't get, is that ASP controls are supposed to maintain state. Seems so strange that the ASP Repeater is losing state.
0
aki4uCommented:
Pplease post all the code for .cs and .aspx.
0
tatton777Author Commented:
####### Here is the select_other_fees.aspx.cs #########

using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;
using UserSession;


public partial class select_other_fees : System.Web.UI.Page
{
  private DataTable OtherFeesTable;
  private DataTable SelectedFeesTable;
  private SessionVariables sv = new SessionVariables();

  string zStudentID;

  protected void Page_Load(object sender, EventArgs e)
  {

    zStudentID = Server.HtmlEncode(Request.QueryString["sID"]);

    // Populate the StudentLabel, ParentLabel, DistrictLabel, SchoolLabel
    PopulateLabels();

    // Populate the OtherFeesDropDownList
    if (!IsPostBack)
      FillOtherFeesDropDownList();
   }

  //=========================================================
  // PopulateLabels()
  //=========================================================
  protected void PopulateLabels()
  {
    //----------------------------------------------
    // This 'using' block is used to get the values
    // for StudentLabel and ParentLabel
    //----------------------------------------------
    try
    {
      using (SqlConnection cn = new SqlConnection(sv.DistConn.ConnectionString))
      {
        cn.Open();
        using (SqlCommand cmd = new SqlCommand("SELECT DISTINCT School, StudentName " +
                                              "FROM FeeView " +
                                              "WHERE sMstFi_Id='" + zStudentID + "'", cn))
        {
          using (SqlDataReader reader = cmd.ExecuteReader())
          {
            while (reader.Read())
            {
              SchoolLabel.Text = "SCHOOL : " + reader.GetString(0).ToUpper();
              StudentLabel.Text = "STUDENT : " + reader.GetString(1).ToUpper();
            }
          }
        }
      }
    }
    catch (SqlException sqlEx)
    {
      ErrorMessageLabel.Visible = true;
      ErrorMessageLabel.Text = "Error accessing database : " + sqlEx.Message;
    }
    ParentLabel.Text = "PARENT : " + sv.ParentName;
    DistrictLabel.Text = "DISTRICT : " + sv.DistrictName.ToUpper();
  }

  //=========================================================
  // CreateFeeTable()
  //=========================================================
  protected DataTable CreateFeeTable(DataTable dt, string zTableName)
  {
    dt = new DataTable(zTableName);
    DataColumn dtColumn;


    // Create new DataColumn 'Fee_Id' and add it to
    // the RequiredFeesTable
    dtColumn = new DataColumn();
    dtColumn.DataType = System.Type.GetType("System.Int32");
    dtColumn.ColumnName = "FeeID";
    dtColumn.ReadOnly = true;
    dt.Columns.Add(dtColumn);

    // Create new DataColumn 'FeeGroup' and add it to
    // the RequiredFeesTable
    dtColumn = new DataColumn();
    dtColumn.DataType = System.Type.GetType("System.String");
    dtColumn.ColumnName = "FeeGroup";
    dtColumn.ReadOnly = true;
    dt.Columns.Add(dtColumn);

    // Create new DataColumn 'Comment' and add it to
    // the RequiredFeesTable
    dtColumn = new DataColumn();
    dtColumn.DataType = System.Type.GetType("System.String");
    dtColumn.ColumnName = "Comment";
    dtColumn.ReadOnly = true;
    dt.Columns.Add(dtColumn);

    // Create new DataColumn 'Price' and add it to
    // the RequiredFeesTable
    dtColumn = new DataColumn();
    dtColumn.DataType = System.Type.GetType("System.Decimal");
    dtColumn.ColumnName = "Price";
    dtColumn.ReadOnly = true;
    dt.Columns.Add(dtColumn);

    return dt;
  }

  //=========================================================
  // FillOtherFeesDataTable()
  //=========================================================
  protected DataTable FillOtherFeesDataTable(DataTable dt, string zFeeGroup)
  {
   
    DataRow dtRow;

    string zCmdTxt = "SELECT sFeeDef_Id, FeeGroup, Comment, Price " +
                     "FROM sFeeDef WHERE FeeGroup='" + zFeeGroup + "'" +
                     "ORDER BY FeeGroup, Comment";
   
    //----------------------------------------------
    // This 'using' block fills a dataTable based
    // on it's FeeGroup
    //----------------------------------------------
    try
    {
      using (SqlConnection cn = new SqlConnection(sv.DistConn.ConnectionString))
      {
        cn.Open();

        using (SqlCommand cmd = new SqlCommand(zCmdTxt, cn))
        {
          using (SqlDataReader reader = cmd.ExecuteReader())
          {
            while (reader.Read())
            {
              string zFID = Convert.ToString(reader.GetInt32(0));
              string zFGP = reader.GetString(1);
              string zCMT = reader.GetString(2);
              string zPRC = Convert.ToString(reader.GetDecimal(3));

              dtRow = dt.NewRow();
              dtRow["FeeID"] = zFID;
              dtRow["FeeGroup"] = zFGP;
              dtRow["Comment"] = zCMT;
              dtRow["Price"] = zPRC;
              dt.Rows.Add(dtRow);
            }
          }
        }
      }
    }
    catch (SqlException sqlEx)
    {
      ErrorMessageLabel.Visible = true;
      ErrorMessageLabel.Text = "Error accessing database : " + sqlEx.Message;
    }
    return dt;
  }

  //==================================================
  // FillOtherFeesDropDownList()
  //==================================================
  protected void FillOtherFeesDropDownList()
  {
    string strCommand = "SELECT DISTINCT FeeGroup " +
                        "FROM sFeeDef " +
                        "WHERE FeeGroup <>'R' AND FeeGroup <> 'N' AND FeeGroup <> 'Generic'" +
                        "ORDER BY FeeGroup ASC";
   
    SqlConnection cn = new SqlConnection(sv.DistConn.ConnectionString);
    SqlDataAdapter myCommand = new SqlDataAdapter(strCommand, cn);

    DataSet ds = new DataSet();
    myCommand.Fill(ds);

    OtherFeesDropDownList.DataSource = ds;
    OtherFeesDropDownList.DataTextField = "FeeGroup";
    OtherFeesDropDownList.DataValueField = "FeeGroup";
    OtherFeesDropDownList.DataBind();
  }

  //==================================================
  // OtherFeesDropDownList_SelectedIndexChanged()
  //==================================================
  protected void OtherFeesDropDownList_SelectedIndexChanged(object sender, EventArgs e)
  {
    OtherFeesDropDownList.Items.Remove(sv.InvalidSelection);

    FeeLabel1.Visible = true;
    PriceLabel1.Visible = true;
    SelectLabel1.Visible = true;
    AddFeesButton.Visible = true;

    OtherFeesTable = CreateFeeTable(OtherFeesTable, "OtherFees");
    FillOtherFeesDataTable(OtherFeesTable, OtherFeesDropDownList.SelectedItem.Text);
    OtherFeesRepeater.DataSource = OtherFeesTable;
    OtherFeesRepeater.DataBind();
    sv.OtherFeesTable = OtherFeesTable;
  }

  //==================================================
  // AddFeesButton_Click()
  //==================================================
  protected void AddFeesButton_Click(object sender, EventArgs e)
  {
    DataRow dtRow;

    if (SelectedFeesTable == null)
    {
      SelectedFeesTable = CreateFeeTable(SelectedFeesTable, "SelectedFees");
    }

    foreach (RepeaterItem ri in this.OtherFeesRepeater.Items)
    {
      CheckBox cb = ri.FindControl("FeeCheckBox") as CheckBox;
      if (cb != null && cb.Checked)
      {
        Label lblFeeID = ri.FindControl("FeeIDLabel") as Label;
        Label lblFeeGroup = ri.FindControl("FeeGroupLabel") as Label;
        Label lblComment = ri.FindControl("CommentLabel") as Label;
        Label lblPrice = ri.FindControl("PriceLabel") as Label;

        dtRow = SelectedFeesTable.NewRow();
        dtRow["FeeID"] = lblFeeID.Text;
        dtRow["FeeGroup"] = lblFeeGroup.Text;
        dtRow["Comment"] = lblComment.Text;
        dtRow["Price"] = lblPrice.Text;
        SelectedFeesTable.Rows.Add(dtRow);
      }
    }
    SelectedFeesRepeater.DataSource = SelectedFeesTable;
    SelectedFeesRepeater.DataBind();
    sv.SelectedFeesTable = SelectedFeesTable;
  }
}

####### Here is the SessionVariable.cs Class that I'm using in the class above ##########

using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;
namespace UserSession
{
  /// <summary>
  /// Summary description for clsSessionVariables.
  /// </summary>
  public class SessionVariables
  {
    //public UserSession()
    //{

    //}

    //----------------------------------------
    // Student Session Variables
    //----------------------------------------
    public string StudentID
    {
      get { return (string)System.Web.HttpContext.Current.Session["StudentID"]; }
      set { System.Web.HttpContext.Current.Session["StudentID"] = value; }
    }

    public string StudentName
    {
      get { return (string)System.Web.HttpContext.Current.Session["StudentName"]; }
      set { System.Web.HttpContext.Current.Session["StudentName"] = value; }
    }

    //----------------------------------------
    // Parent Session Variables
    //----------------------------------------
    public string ParentID
    {
      get { return (string)System.Web.HttpContext.Current.Session["ParentID"]; }
      set { System.Web.HttpContext.Current.Session["ParentID"] = value; }
    }

    public string ParentName
    {
      get { return (string)System.Web.HttpContext.Current.Session["ParentName"]; }
      set { System.Web.HttpContext.Current.Session["ParentName"] = value; }
    }

    public string SecurityLevel
    {
      get { return (string)System.Web.HttpContext.Current.Session["SecurityLevel"]; }
      set { System.Web.HttpContext.Current.Session["SecurityLevel"] = value; }
    }

    //----------------------------------------
    // State Session Variables
    //----------------------------------------
    public string StateName
    {
      get { return (string)System.Web.HttpContext.Current.Session["StateName"]; }
      set { System.Web.HttpContext.Current.Session["StateName"] = value; }
    }

    public string StateID
    {
      get { return (string)System.Web.HttpContext.Current.Session["StateID"]; }
      set { System.Web.HttpContext.Current.Session["StateID"] = value; }
    }

    //----------------------------------------
    // District Session Variables
    //----------------------------------------
    public string DistrictName
    {
      get { return (string)System.Web.HttpContext.Current.Session["DistrictName"]; }
      set { System.Web.HttpContext.Current.Session["DistrictName"] = value; }
    }

    public string DistrictID
    {
      get { return (string)System.Web.HttpContext.Current.Session["DistrictID"]; }
      set { System.Web.HttpContext.Current.Session["DistrictID"] = value; }
    }

    //----------------------------------------
    // Other Session Variables
    //----------------------------------------
    public string InvalidSelection
    {
      get { return (string)System.Web.HttpContext.Current.Session["InvalidSelection"]; }
      set { System.Web.HttpContext.Current.Session["InvalidSelection"] = value; }
    }

    //----------------------------------------
    // Object Session Variables
    //----------------------------------------
    public DataTable OtherFeesTable
    {
      get { return (DataTable)System.Web.HttpContext.Current.Session["OtherFeesTable"]; }
      set { System.Web.HttpContext.Current.Session["OtherFeesTable"] = value; }
    }

    public DataTable SelectedFeesTable
    {
      get { return (DataTable)System.Web.HttpContext.Current.Session["SelectedFeesTable"]; }
      set { System.Web.HttpContext.Current.Session["SelectedFeesTable"] = value; }
    }

    public SqlConnectionStringBuilder DistConn
    {
      get { return (SqlConnectionStringBuilder)System.Web.HttpContext.Current.Session["DistConn"]; }
      set { System.Web.HttpContext.Current.Session["DistConn"] = value; }
    }
  }
}

####### Here is select_other_fees.aspx ###########

<%@ Page Language="C#" MasterPageFile="~/MySchoolFees.master" AutoEventWireup="true" CodeFile="select_other_fees.aspx.cs" Inherits="select_other_fees" Title=":: MySchoolFees.com - Pay Other Fees ::" %>
<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
  <table width="100%" cellspacing="8">
    <tr>
      <td colspan="3">
        <span style="font-size: 12pt">Pay Other Fees</span></td>
    </tr>
    <tr>
      <td>
        <asp:Label ID="SpacerLabel1" runat="server" Width="25px"></asp:Label></td>
      <td>
        <table cellpadding="2" cellspacing="2" style="border-right: black thin solid; border-top: black thin solid;
          border-left: black thin solid; border-bottom: black thin solid" width="100%">
          <tr>
            <td bgcolor="#5e6ac6" colspan="2">
              <span style="color: #ffffff">Information</span></td>
          </tr>
          <tr>
            <td>
              <asp:Label ID="ParentLabel" runat="server"></asp:Label></td>
            <td>
              <asp:Label ID="DistrictLabel" runat="server"></asp:Label></td>
          </tr>
          <tr>
            <td>
              <asp:Label ID="StudentLabel" runat="server"></asp:Label></td>
            <td>
              <asp:Label ID="SchoolLabel" runat="server"></asp:Label></td>
          </tr>
        </table>
      </td>
      <td>
        <asp:Label ID="SpacerLabel2" runat="server" Width="25px"></asp:Label></td>
    </tr>
    <tr>
      <td>
      </td>
      <td>
        <table cellpadding="2" cellspacing="0" style="border-right: black thin solid;
          border-left: black thin solid; border-bottom: black thin solid; border-top: black thin solid;" width="100%">
          <tr>
            <td colspan="3" bgcolor="#5e6ac6" style="text-align: left">
              <table width="100%" cellpadding="0" cellspacing="0" border="0">
                <tr>
                  <td>
                    <span style="color: #ffffff">
                      <asp:Label ID="OtherFeesLabel" runat="server" Text="Other Fees"></asp:Label></span></td>
                  <td style="text-align: right">
                    <span style="color: #ffffff">Select Fee Type</span>
                    <asp:DropDownList ID="OtherFeesDropDownList" runat="server" OnSelectedIndexChanged="OtherFeesDropDownList_SelectedIndexChanged" AutoPostBack="True">
                    </asp:DropDownList></td>                  
                </tr>
              </table>
             
            </td>
          </tr>
          <tr>
            <td>
              <asp:Label ID="FeeLabel1" runat="server" Text="Fee" BackColor="Navy" ForeColor="White" Visible="False" Width="100%" Height="18px"></asp:Label></td>
            <td>
              <asp:Label ID="PriceLabel1" runat="server" Text="Price" style="text-align:center" BackColor="Navy" ForeColor="White" Visible="False" Width="100%" Height="18px"></asp:Label></td>
            <td style="text-align: left">
              <asp:Label ID="SelectLabel1" runat="server" BackColor="Navy"
                         ForeColor="White" Text="Select" style="text-align:center" Width="100%" Visible="False" Height="18px"></asp:Label></td>
          </tr>
         
           <%--Begin OtherFeesRepeater--%>
           <asp:Repeater ID="OtherFeesRepeater" runat="server" EnableViewState="false">
            <ItemTemplate>
              <tr>
               <td>
                 <asp:Label ID="FeeGroupLabel" runat="server" Visible="false" Text=<%# Eval("FeeGroup") %>>
                 </asp:Label>
                 <asp:Label ID="FeeIDLabel" runat="server" Visible="false" Text=<%# Eval("FeeID") %>>
                 </asp:Label>
                 <asp:Label ID="CommentLabel" runat="server" Text=<%#Eval ("Comment") %>>
                 </asp:Label>
               </td>
               <td align="right">
                 <asp:Label ID="PriceLabel" runat="server" Text=<%# Eval("Price") %>>
                 </asp:Label>
               </td>
               <td align="center">
                <asp:CheckBox ID="FeeCheckBox" runat="server" />
               </td>
             </tr>
            </ItemTemplate>
           </asp:Repeater>
           <%--End OtherFeesRepeater--%>
           
          <tr>
            <td colspan="2" style="text-align: right">
              <asp:Label ID="SpacerLabel3" runat="server" Width="150px"></asp:Label></td>
            <td style="text-align: right">
              <asp:Button ID="AddFeesButton" runat="server" Text="Add Fees" Visible="False" OnClick="AddFeesButton_Click" />
            </td>
          </tr>
         </table>
      </td>
    </tr>
         <tr>
      <td>
      </td>
    <tr>
      <td>
      </td>
      <td>
        <table width="100%" cellpadding="2" cellspacing="2" border="0" style="border-right: black thin solid;
          border-left: black thin solid; border-bottom: black thin solid; border-top: black thin solid;">
          <tr>
            <td>
              <span style="font-size: 12pt">
                <asp:Label ID="SummaryHeaderLabel" runat="server" Text="Summary"></asp:Label></span></td>
            <td>
            </td>
            <td colspan="2">
              <asp:Label ID="NoFeesSelectedLabel" runat="server" Text="No Fees Selected"></asp:Label></td>
          </tr>
          <tr>
            <td style="height: 18px">
            </td>
            <td style="height: 18px">
              <asp:Label ID="FeeLabel2" runat="server" Text="Fee" Visible="False"></asp:Label></td>
            <td style="height: 18px">
              <asp:Label ID="TypeLabel2" runat="server" Text="Type" Visible="False"></asp:Label></td>
            <td style="height: 18px; text-align: right">
              <asp:Label ID="PriceLabel2" runat="server" Text="Price" Visible="False"></asp:Label></td>
          </tr>
         
          <%-- Begin SelectedFeesRepeater --%>
          <asp:Repeater ID="SelectedFeesRepeater" runat="server" EnableViewState="false">
            <ItemTemplate>
              <tr>
                <td>
                </td>
                <td>
                 <asp:Label ID="FeeIDLabel" runat="server" Visible="false" Text=<%# Eval("FeeID") %>>
                 </asp:Label>
                 <asp:Label ID="FeeGroupLabel"  runat="server" Text='<%# Eval ("FeeGroup")%>'>
                 </asp:Label>
                </td>
                <td align="left">
                 <asp:Label ID="CommentLabel" runat="server" Text='<%#Eval ("Comment") %>'>
                 </asp:Label>

                </td>
                <td align="right">
                 <asp:Label ID="PriceLabel" runat="server" Text='<%# Eval("Price") %>'>
                 </asp:Label>
                </td>
              </tr>
            </ItemTemplate>
          </asp:Repeater>
          <%--End SelectedFeesRepeater--%>
         
          <tr>
            <td style="height: 18px">
            </td>
            <td style="height: 18px">
            </td>
            <td style="height: 18px">
            </td>
            <td style="height: 18px; text-align: center">
            </td>
          </tr>
          <tr>
            <td style="height: 18px">
            </td>
            <td style="height: 18px">
            </td>
            <td style="height: 18px; text-align: right">
              <asp:Label ID="TotalHeaderLabel" runat="server" Text="Total : " Visible="False"></asp:Label>
            </td>
            <td style="height: 18px; text-align: right">
              <asp:Label ID="TotalLabel" runat="server" Visible="False"></asp:Label></td>
          </tr>
          <tr>
            <td style="height: 18px">
            </td>
            <td style="height: 18px">
            </td>
            <td style="height: 18px; text-align: right">
            </td>
            <td style="height: 18px; text-align: right">
            </td>
          </tr>
          <tr>
            <td style="height: 18px">
            </td>
            <td style="height: 18px">
            </td>
            <td style="height: 18px; text-align: right">
            </td>
            <td style="height: 18px; text-align: right">
              <asp:Button ID="PayFeesButton" runat="server" Text="Pay Fees" Visible="False" />
              <asp:Button ID="ClearFeesButton" runat="server" Text="Clear Selected Fees" Visible="False" />
              <asp:Button ID="CancelButton" runat="server" Text="Cancel" Visible="False" /></td>
          </tr>
        </table>
      </td>
      <td>
      </td>
    </tr>
    <tr>
      <td>
      </td>
      <td>
      </td>
      <td>
      </td>
    </tr>
    <tr>
      <td>
      </td>
      <td>
      </td>
      <td>
      </td>
    </tr>
    <tr>
      <td>
      </td>
      <td>
      </td>
      <td>
      </td>
    </tr>
    <tr>
      <td>
      </td>
      <td>
      </td>
      <td>
      </td>
    </tr>
    <tr>
      <td colspan="3">
        <asp:Label ID="ErrorMessageLabel" runat="server" BackColor="Yellow" ForeColor="Red"
          Visible="False" Width="100%"></asp:Label></td>
    </tr>
  </table>
</asp:Content>



0
aki4uCommented:
did you try to change this line:
           <asp:Repeater ID="OtherFeesRepeater" runat="server" EnableViewState="false">

to this:

           <asp:Repeater ID="OtherFeesRepeater" runat="server" EnableViewState="true">


0

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
ASP.NET

From novice to tech pro — start learning today.

Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.