Click here to Skip to main content
15,886,519 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more:
I have created dynamic controls which contains all the controls . ex- dropdownlist , checkboxlist,radiobuttonlist etc . i have to make these controls with required field validator also some condition . please help me to sot out this problem as soon as possible .
the code is below
C#
The Controls create only once time on button click
 IT create on some button event
protected void btnId_Click(object sender, EventArgs e)
    {

DataTable dtQuestions = ViewState["dtQues"] as DataTable;
int id = 0;
#region dynamic controls
foreach (DataRow dr in dtQuestions.Rows)
{
    id = objCon.ConToInt(dr["QuesId"]);

    #region label 
    Label lbQues = new Label();
    lbQues.Font.Bold = true;
    lbQues.EnableViewState = true;
    lbQues.Font.Size = 8;
    lbQues.ForeColor = Color.Red;
    lbQues.Text = "Question : ";
    lbQues.ID = "lbQues-" + id.ToString();
    pnlDynamics.Controls.Add(lbQues);

    Label lblQues = new Label();
    lblQues.Font.Bold = true;
    lblQues.Font.Size = 9;
    lblQues.EnableViewState = true;
    lblQues.Text = dr["Name"].ToString();
    lblQues.ID = "lblQues-" + id.ToString();
    lblQues.Width = 600;
    lblQues.ForeColor = Color.Red;
    pnlDynamics.Controls.Add(lblQues);

    Literal lt1 = new Literal();
    lt1.Text = "<br />";
    pnlDynamics.Controls.Add(lt1);

    Label lbAns = new Label();
    lbAns.Text = "Answer".PadRight(5) + ": ";
    lbAns.Font.Bold = true;
    lbAns.ID = "lbAns-" + id.ToString();
    lbAns.EnableViewState = true;
    lbAns.Font.Size = 8;
    lbAns.Width = 55;
    pnlDynamics.Controls.Add(lbAns);
    #endregion
    string getQuesItem = @"SELECT *  FROM QUESTIONITEM WHERE QUESID =" + dr["QuesId"].ToString() + "";
    DataTable dtQuesItem = objDal.ExecuteTable(getQuesItem);
    int id1 = 0;

    #region creating answers options
    //DropDownList
    if (dr["GroupId"].ToString() == "1")
    {
        DropDownList ddl = new DropDownList();
        ddl.ID = "ddlDynamics-" + id.ToString();
        ddl.EnableViewState = true;
        ddl.Width = 150;
        ddl.Items.Clear();
        ddl.ForeColor = Color.Black;
        if (dr["IsReQuiered"].ToString().Trim() == "1")
        {
            RequiredFieldValidator rfvddl = new RequiredFieldValidator();
            rfvddl.ID ="rfvddl-"+ ddl.ID;
            pnlDynamics.Controls.Add(rfvddl);
            rfvddl.ControlToValidate = ddl.ID;
            rfvddl.Text = "*";
            rfvddl.ErrorMessage = "This Field is Mandatory";
            rfvddl.ValidationGroup = "Mandatory";
           
        }
        foreach (DataRow dritem in dtQuesItem.Rows)
        {
            id1++;
            ddl.Items.Add(new ListItem("" + dritem["ITEMNAME"].ToString() + "", "" + dritem["ITEMNAME"].ToString() + ""));
            pnlDynamics.Controls.Add(ddl);
        }
        ddl.Items.Insert(0, "--Select--");
    }
    //RadioButtonList
    else if (dr["GroupId"].ToString() == "2")
    {
        RadioButtonList rbl = new RadioButtonList();
        rbl.ID = "rblDynamics-" + id.ToString();
        rbl.EnableViewState = true;
        // rbl.Width = 400;
        rbl.Items.Clear();
        rbl.ForeColor = Color.Black;
        if (dr["IsReQuiered"].ToString().Trim() == "1")
        {
            RequiredFieldValidator rfvrbl = new RequiredFieldValidator();
            rfvrbl.ID = "rfvrbl-" + rbl.ID;
            pnlDynamics.Controls.Add(rfvrbl);
            rfvrbl.ControlToValidate = rbl.ID;
            rfvrbl.Text = "*";
            rfvrbl.ErrorMessage = "This Field is Mandatory";
            rfvrbl.ValidationGroup = "Mandatory";
        }
        foreach (DataRow dritem in dtQuesItem.Rows)
        {
            rbl.Items.Add(new ListItem("" + dritem["ITEMNAME"].ToString() + "", "" + dritem["ITEMNAME"].ToString() + ""));
            pnlDynamics.Controls.Add(rbl);
        }
        rbl.RepeatColumns = 2;
        rbl.RepeatDirection = System.Web.UI.WebControls.RepeatDirection.Horizontal;
    }
    //CheckBoxList
    else if (dr["GroupId"].ToString() == "3")
    {
        CheckBoxList cbl = new CheckBoxList();

        cbl.EnableViewState = true;
        cbl.Width = 400;
        cbl.Items.Clear();
        cbl.ForeColor = Color.Black;
        cbl.ID = "cblDynamics-" + id.ToString();
        if (dr["IsReQuiered"].ToString().Trim() == "1")
        {
            RequiredFieldValidator rfvcbl = new RequiredFieldValidator();
            rfvcbl.ID = "rfvcbl-" + cbl.ID;
            pnlDynamics.Controls.Add(rfvcbl);
            rfvcbl.ControlToValidate = cbl.ID;
            rfvcbl.Text = "*";
            rfvcbl.ErrorMessage = "This Field is Mandatory";
            rfvcbl.ValidationGroup = "Mandatory";
            
        }
        foreach (DataRow dritem in dtQuesItem.Rows)
        {
            // cbl. = "cblDynamics-" + id.ToString() + "|" + dritem["ID"].ToString();
            cbl.Items.Add(new ListItem("" + dritem["ITEMNAME"].ToString() + "", "" + dritem["ID"].ToString() + ""));
            pnlDynamics.Controls.Add(cbl);
        }
        cbl.RepeatColumns = 4;
    }
    else if (dr["GroupId"].ToString() == "4")
    {
        TextBox txt = new TextBox();
        txt.ID = "txtDynamics-" + id.ToString();
        txt.EnableViewState = true;
        txt.Width = 400;
        if (dr["IsReQuiered"].ToString().Trim() == "1")
        {
            RequiredFieldValidator rfvtxt = new RequiredFieldValidator();
            rfvtxt.ID = "rfvtxt-" + txt.ID;
            pnlDynamics.Controls.Add(rfvtxt);                                
            rfvtxt.ControlToValidate = txt.ID;
            rfvtxt.Text = "*";
            rfvtxt.ErrorMessage = "This Field is Mandatory";
            rfvtxt.ValidationGroup = "Mandatory";
            
        }
        pnlDynamics.Controls.Add(txt);
    }
    else
    {
        TextBox txtM = new TextBox();
        txtM.ID = "txtMDynamics-" + id.ToString();
        txtM.Font.Size = 8;
        txtM.EnableViewState = true;
        txtM.TextMode = TextBoxMode.MultiLine;
        txtM.Width = 400;
        if (dr["IsReQuiered"].ToString().Trim() == "1")
        {
            RequiredFieldValidator rfvtxtM = new RequiredFieldValidator();
            rfvtxtM.ID = "rfvtxtM-" + txtM.ID;  
            pnlDynamics.Controls.Add(rfvtxtM);
            rfvtxtM.ControlToValidate = txtM.ID;
            rfvtxtM.Text = "*";
            rfvtxtM.ErrorMessage = "This Field is Mandatory";
            rfvtxtM.ValidationGroup = "Mandatory";                              
        }
        pnlDynamics.Controls.Add(txtM);
    }
    Literal lt2 = new Literal();
    lt2.Text = "<br />";
    pnlDynamics.Controls.Add(lt2);
    #endregion

}

#endregion
}

My required field validation is not working
i have to maintain the state on some button event

protected void btnSave_Click(object sender, EventArgs e)
{
}
Posted
Updated 18-Dec-13 21:03pm
v4
Comments
SarveshShukla 19-Dec-13 0:26am    
At which event you are loading/creating these controls
Uddhalak Mishra 19-Dec-13 0:36am    
i have server side button "Go"
where i am creating these controls

also i have another button "Save" on which i am saving these controls value in database, but now before saving i want to call its validation
SarveshShukla 19-Dec-13 1:45am    
Just a thought creating your control dynamically in Go button click will not allow the viewstate of the controls to be maintained, you should be using Init event for creating any dynamic controls
Uddhalak Mishra 19-Dec-13 1:59am    
how will you please describe
or just tell me that how can i enable required field validator

// ------------------------------------------------------------------------------------------
// Copyright AspDotNetStorefront.com, 1995-2011. All Rights Reserved.
// http://www.aspdotnetstorefront.com
// For details on this license please visit the product homepage at the URL above.
// THE ABOVE NOTICE MUST REMAIN INTACT.
// ------------------------------------------------------------------------------------------

using System;
using System.Xml;
using System.Xml.Xsl;
using System.Text;
using System.Text.RegularExpressions;
using System.IO;
using System.Web;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.Data;
using System.Data.SqlClient;
using System.Globalization;
using AspDotNetStorefrontCore;
using AspDotNetStorefrontControls;
using AspDotNetStorefrontGateways;
using System.Collections.Generic;
using AspDotNetStorefrontCore.ShippingCalculation;
using AjaxControlToolkit;
using DevExpress.Web.ASPxEditors;
using System.Web.UI;
using System.Drawing;



namespace AspDotNetStorefront
{
///
/// Summary description for wishlist.
///

///


public partial class ProductWiseQuestions : SkinBase
{

#region common members
Dal objDal = new Dal();
Conversion objCon = new Conversion();
int groupSeqId = 0;
#endregion

protected void Page_Load(object sender, EventArgs e)
{

try
{
this.RequireCustomerRecord();
SectionTitle = AppLogic.GetString("Product Wise Questions", SkinID, ThisCustomer.LocaleSetting);
if (!Page.IsPostBack)
{
ViewState["dtProduct"] = null;
string ReturnURL = CommonLogic.QueryStringCanBeDangerousContent("ReturnUrl");
AppLogic.CheckForScriptTag(ReturnURL);
ViewState["ReturnURL"] = ReturnURL;
bindProductCheckBoxList();
}
}
catch (Exception ex)
{
ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "alertMessage", "alert('" + ex.Message + "')", true);
}
}

protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
}

#region bind

//bind productcheckboxlist
protected void bindProductCheckBoxList()
{
try
{
string getProduct = "SELECT DISTINCT(PK.PRODUCTID) PID, P.NAME NAME FROM PRODUCTKIT PK INNER JOIN PRODUCT P ON PK.PRODUCTID = P.PRODUCTID ORDER BY NAME ASC";
DataTable dtProductKit = objDal.ExecuteTable(getProduct);
chkPrdct.DataSource = dtProductKit;
chkPrdct.DataValueField = "PID";
chkPrdct.DataTextField = "NAME";
chkPrdct.DataBind();
}
catch (Exception ex)
{
ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "alertMessage", "alert('" + ex.Message + "')", true);
}
}

// method for get questions
private void getProduct()
{
try
{
if (pnlDynamics.Controls.Count > 0)
{
pnlDynamics.Controls.Clear();
upAll.Update();
}
if (chkPrdct.Items.Count > 0)
{
string pId = string.Empty;
foreach (ListItem li in chkPrdct.Items)
{
if (li.Selected == true)
{
pId += li.Value + ",";
}
}
if (!string.IsNullOrEmpty(pId))
{
string getQuesId = "SELECT DISTINCT(GROUPID) FROM PRODUCTKIT WHERE PRODUCTID IN (" + pId.TrimEnd(',') + ")";
DataTable dtQuesId = objDal.ExecuteTable(getQuesId);
string qId = string.Empty;
foreach (DataRow dr in dtQuesId.Rows)
{
qId += dr["GroupId"].ToString() + ",";
}

string getQues = @"SELECT QUESID ,NAME , DESCRIPTION ,GROUPID , ISREQUIERED FROM QUESTION WHERE QUESID IN (" + qId.TrimEnd(',') + ") ORDER BY QUESID ASC";
DataTable dtQues = objDal.ExecuteTable(getQues);
ViewState["dtQues"] = dtQues;
}
}
}
catch (Exception ex)
{
ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "alertMessage", "alert('" + ex.Message + "')", true);
}
}

#endregion

// create questions
protected void btnGO_Click(object sender, EventArgs e)
{
try
{
if (pnlDynamics.Controls.Count > 1)
pnlDynamics.Controls.Clear();

string[] ctrls = Request.Form.ToString().Split('&');

#region remove previous Dynamic controls
for (int count = 0; count < ctrls.Length; count++)
{
if (ctrls[count].ContainsIgnoreCase("Dynamics"))
{
ctrls[count].Remove(count);
}
}
#endregion

bool check = false;
#region checkcondition
if (chkPrdct.Items.Count > 0)
{
string pId = string.Empty;
foreach (ListItem li in chkPrdct.Items)
{
if (li.Selected == true)
{
check = true;
}
}
}
#endregion
if (check == true)
{

getProduct();
DataTable dtQuestions = ViewState["dtQues"] as DataTable;
int id = 0;
#region dynamic controls
foreach (DataRow dr in dtQuestions.Rows)
{
id = objCon.ConToInt(dr["QuesId"]);

#region label
Label lbQues = new Label();
lbQues.Text = "Question : ";
lbQues.ID = "lbQues-" + id.ToString();
pnlDynamics.Controls.Add(lbQues);

Label lblQues = new Label();
lblQues.Text = dr["Name"].ToString();
lblQues.ID = "lblQues-" + id.ToString();
pnlDynamics.Controls.Add(lblQues);

Literal lt1 = new Literal();
lt1.Text = "
";
pnlDynamics.Controls.Add(lt1);

Label lbAns = new Label();
lbAns.Text = "Answer".PadRight(5) + ": ";
lbAns.ID = "lbAns-" + id.ToString();
pnlDynamics.Controls.Add(lbAns);
#endregion
string getQuesItem = @"SELECT * FROM QUESTIONITEM WHERE QUESID =" + dr["QuesId"].ToString() + "";
DataTable dtQuesItem = objDal.ExecuteTable(getQuesItem);

#region creating answers options
//DropDownList
if (dr["GroupId"].ToString() == "1")
{
DropDownList ddl = new DropDownList();
ddl.ID = "ddlDynamics-" + id.ToString();
ddl.Items.Clear();
if (dr["IsReQuiered"].ToString().Trim() == "1")
{
RequiredFieldValidator rfvddl = new RequiredFieldValidator();
rfvddl.ID ="rfvddl-"+ ddl.ID;
rfvddl.ControlToValidate = ddl.ID;
rfvddl.Text = "*";
rfvddl.ErrorMessage = "This Field is Mandatory";
rfvddl.ValidationGroup = "Mandatory";
pnlDynamics.Controls.Add(rfvddl);
ddl.ValidationGroup = "Mandatory";
}
foreach (DataRow dritem in dtQuesItem.Rows)
{
ddl.Items.Add(new ListItem("" + dritem["ITEMNAME"].ToString() + "", "" + dritem["ITEMNAME"].ToString() + ""));
pnlDynamics.Controls.Add(ddl);
}
ddl.Items.Insert(0, "--Select--");
}
//RadioButtonList
else if (dr["GroupId"].ToString() == "2")
{
RadioButtonList rbl = new RadioButtonList();
rbl.ID = "rblDynamics-" + id.ToString();

rbl.Items.Clear();
if (dr["IsReQuiered"].ToString().Trim() == "1")
{
RequiredFieldValidator rfvrbl = new RequiredFieldValidator();
rfvrbl.ID = "rfvrbl-" + rbl.ID;
rfvrbl.ControlToValidate = rbl.ID;
rfvrbl.Text = "*";
rfvrbl.ErrorMessage = "This Field is Mandatory";
rfvrbl.ValidationGroup = "Mandatory";
pnlDynamics.Controls.Add(rfvrbl);
rbl.ValidationGroup = "Mandatory";
}
foreach (DataRow dritem in dtQuesItem.Rows)
{
rbl.Items.Add(new ListItem("" + dritem["ITEMNAME"].ToString() + "", "" + dritem["ITEMNAME"].ToString() + ""));
pnlDynamics.Controls.Add(rbl);
}
rbl.RepeatColumns = 2;
rbl.RepeatDirection = System.Web.UI.WebControls.RepeatDirection.Horizontal;
}
//CheckBoxList
else if (dr["GroupId"].ToString() == "3")
{
CheckBoxList cbl = new CheckBoxList();
cbl.Items.Clear();
cbl.ID = "cblDynamics-" + id.ToString();
if (dr["IsReQuiered"].ToString().Trim() == "1")
{
RequiredFieldValidator rfvcbl = new RequiredFieldValidator();
rfvcbl.ID = "rfvcbl-" + cbl.ID;
rfvcbl.ControlToValidate = cbl.ID;
rfvcbl.Text = "*";
rfvcbl.ErrorMessage = "This Field is Mandatory";
rfvcbl.ValidationGroup = "Mandatory";
pnlDynamics.Controls.Add(rfvcbl);
cbl.ValidationGroup = "Mandatory";
}
foreach (DataRow dritem in dtQuesItem.Rows)
{
cbl.Items.Add(new ListItem("" + dritem["ITEMNAME"].ToString() + "", "" + dritem["ID"].ToString() + ""));
pnlDynamics.Controls.Add(cbl);
}
cbl.RepeatColumns = 4;
}
else if (dr["GroupId"].ToString() == "4")
{
TextBox txt = new TextBox();
txt.ID = "txtDynamics-" + id.ToString();

if (dr["IsReQuiered"].ToString().Trim() == "1")
{
RequiredFieldValidator rfvtxt = new RequiredFieldValidator();
rfvtxt.ID = "rfvtxt-" + txt.ID;
rfvtxt.ControlToValidate = txt.ID;
rfvtxt.Text = "*";
rfvtxt.ErrorMessage = "This Field is Mandatory";
rfvtxt.ValidationGroup = "Mandatory";
pnlDynamics.Controls.Add(rfvtxt);
txt.ValidationGroup = "Mandatory";
}
pnlDynamics.Controls.Add(txt);
}
else
{
TextBox txtM = new TextBox();
txtM.ID = "txtMDynamics-" + id.ToString();

txtM.TextMode = TextBoxMode.MultiLine;
if (dr["IsReQuiered"].ToString().Trim() == "1")
{
RequiredFieldValidator rfvtxtM = new RequiredFieldValidator();
rfvtxtM.ID = "rfvtxtM-" + txtM.ID;
rfvtxtM.ControlToValidate = txtM.ID;
rfvtxtM.Text = "*";
rfvtxtM.ErrorMessage = "This Field is Mandatory";
rfvtxtM.ValidationGroup = "Mandatory";
pnlDynamics.Controls.Add(rfvtxtM);
txtM.ValidationGroup = "Mandatory";
}
pnlDynamics.Controls.Add(txtM);
}
Literal lt2 = new Literal();
lt2.Text = "
";
pnlDynamics.Controls.Add(lt2);
#endregion
}

#endregion


}
}
catch (Exception ex)
{
ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "alertMessage", "alert('" + ex.Message + "')", true);
}
}


private void RecreateControls(string ctrlPrefix, string ctrlType)
{
try
{
string[] ctrls = Request.Form.ToString().Split('&');
if (ViewState["dtQues"] != null)
{
DataTable dtQuestions = ViewState["dtQues"] as DataTable;
Control c = null;
Literal lt2;
////foreach (DataRow dr in dtQuestions.Rows)// (int k = 1; k <= dtQuestions.Rows.Count; k++)
////{
int k = Convert.ToInt32(dtQuestions.Rows[groupSeqId]["QuesId"].ToString());

#region label
Label lbQues = new Label();
lbQues.Text = "Question : ";
lbQues.ID = "lbQues-" + k.ToString();
lbQues.CssClass = "StyleSheet";
pnlDynamics.Controls.Add(lbQues);

Label lblQues = new Label();
lblQues.ID = "lblQues-" + k.ToString();
lblQues.Text = dtQuestions.Rows[groupSeqId]["Name"].ToString();// dr.["Name"].ToString();
lblQues.CssClass = "StyleSheet";
pnlDynamics.Controls.Add(lblQues);

Literal lt1 = new Literal();
lt1.Text = "
";
pnlDynamics.Controls.Add(lt1);


Label lbAns = new Label();
lbAns.ID = "lbAns-" + k.ToString();
lbAns.Text = "Ans".PadRight(5) + ": ";
lbAns.CssClass = "StyleSheet";
pnlDynamics.Controls.Add(lbAns);

#endregion

string getQuesItem = @"SELECT * FROM QUESTIONITEM WHERE QUESID =" + dtQuestions.Rows[groupSeqId]["QuesId"].ToString() + "";
DataTable dtQuesItem = objDal.ExecuteTable(getQuesItem);

for (int i = 0; i < ctrls.Length; i++)
{
if (ctrls[i].Contains(ctrlPrefix + "-" + k.ToString()))
{
string ctrlName = ctrls[i].Split('=')[0];
string ctrlValue = ctrls[i].Split('=')[1];
//Decode the Value
ctrlValue = Server.UrlDecode(ctrlValue);
#region child controls
if (ctrlType == "DropDownList" && ctrlPrefix.Contains("ddlDynamics"))
{
DropDownList ddl = new DropDownList();
ddl.ID = ctrlName;
ddl.Items.Clear();
if (dtQuestions.Rows[groupSeqId]["IsReQuiered"].ToString()== "1")
{
RequiredFieldValidator rfvddl = new RequiredFieldValidator();
rfvddl.ID = "rfvddl-" + ddl.ID;
rfvddl.ControlToValidate = ddl.ID;
rfvddl.Text = "*";
rfvddl.ErrorMessage = "This Field is Mandatory";
rfvddl.ValidationGroup = "Mandatory";
pnlDynamics.Controls.Add(rfvddl);
ddl.ValidationGroup = "Mandatory";
}
foreach (DataRow dritem in dtQuesItem.Rows)
{
ddl.Items.Add(new ListItem("" + dritem["ITEMNAME"].ToString() + "", "" + dritem["ITEMNAME"].ToString() + ""));
pnlDynamics.Controls.Add(ddl);
}
ddl.Items.Insert(0, "--Select--");
ddl.SelectedValue = ctrlValue;

lt2 = new Literal();
lt2.Text = "
";
pnlDynamics.Controls.Add(lt2);

break;

}
// break;

if (ctrlType == "RadioButtonList" && ctrlPrefix.Contains("rblDynamics"))
{
RadioButtonList rbl = new RadioButtonList();
rbl.ID = ctrlName;
if (dtQuestions.Rows[groupSeqId]["IsReQuiered"].ToString() == "1")
{
RequiredFieldValidator rfvrbl = new RequiredFieldValidator();
rfvrbl.ID = "rfvrbl-" + rbl.ID;
rfvrbl.ControlToValidate = rbl.ID;
rfvrbl.Text = "*";
rfvrbl.ErrorMessage = "This Field is Mandatory";
rfvrbl.ValidationGroup = "Mandatory";
pnlDynamics.Controls.Add(rfvrbl);
rbl.ValidationGroup = "Mandatory";
}
foreach (DataRow dritem in dtQuesItem.Rows)
{
rbl.Items.Add(new ListItem("" + dritem["ITEMNAME"].ToString() + "", "" + dritem["ITEMNAME"].ToString() + ""));
pnlDynamics.Controls.Add(rbl);
}
rbl.SelectedValue = ctrlValue;
rbl.RepeatColumns = 2;
rbl.RepeatDirection = System.Web.UI.WebControls.RepeatDirection.Horizontal;

lt2 = new Literal();
lt2.Text = "
";
pnlDynamics.Controls.Add(lt2);

break;
}
// break;

if (ctrlType == "CheckBoxList" && ctrlPrefix.Contains("cblDynamic"))
{
CheckBoxList cbl = new CheckBoxList();
cbl.ID = ctrlName;
if (dtQuestions.Rows[groupSeqId]["IsReQuiered"].ToString() == "1")
{
RequiredFieldValidator rfvcbl = new RequiredFieldValidator();
rfvcbl.ID = "rfvrbl-" + cbl.ID;
rfvcbl.ControlToValidate = cbl.ID;
rfvcbl.Text = "*";
rfvcbl.ErrorMessage = "This Field is Mandatory";
rfvcbl.ValidationGroup = "Mandatory";
pnlDynamics.Controls.Add(rfvcbl);
cbl.ValidationGroup = "Mandatory";
}
foreach (DataRow dritem in dtQuesItem.Rows)
{
cbl.Items.Add(new ListItem("" + dritem["ITEMNAME"].ToString() + "", "" + dritem["ITEMNAME"].ToString() + ""));
pnlDynamics.Controls.Add(cbl);
}

cbl.SelectedValue = ctrlValue;
cbl.RepeatColumns = 4;
//plcDynamic.Controls.Add(cbl);
lt2 = new Literal();
lt2.Text = "
";
pnlDynamics.Controls.Add(lt2);
break;

}
// break;
if (ctrlType == "TextBox" && ctrlPrefix.Contains("txtDynamics"))
{
TextBox txt = new TextBox();
txt.ID = ctrlName;
txt.Text = ctrlValue;
if (dtQuestions.Rows[groupSeqId]["IsReQuiered"].ToString() == "1")
{
RequiredFieldValidator rfvtxt = new RequiredFieldValidator();
rfvtxt.ID = "rfvtxt-" + txt.ID;
rfvtxt.ControlToValidate = txt.ID;
rfvtxt.Text = "*";
rfvtxt.ErrorMessage = "This Field is Mandatory";
rfvtxt.ValidationGroup = "Mandatory";
pnlDynamics.Controls.Add(rfvtxt);
txt.ValidationGroup = "Mandatory";
}
pnlDynamics.Controls.Add(txt);
lt2 = new Literal();
lt2.Text = "
";
pnlDynamics.Controls.Add(lt2);

break;

}
// break;
if (ctrlType == "TextBox" && ctrlPrefix.Contains("txtMDynamics"))
{
TextBox txtM = new TextBox();
txtM.ID = ctrlName;
txtM.Text = ctrlValue;
txtM.TextMode = TextBoxMode.MultiLine;
if (dtQuestions.Rows[groupSeqId]["IsReQuiered"].ToString() == "1")
{
RequiredFieldValidator rfvtxtM = new RequiredFieldValidator();
rfvtxtM.ID = "rfvtxt-" + txtM.ID;
rfvtxtM.ControlToValidate = txtM.ID;
rfvtxtM.Text = "*";
rfvtxtM.ErrorMessage = "This Field is Mandatory";
rfvtxtM.ValidationGroup = "Mandatory";
pnlDynamics.Controls.Add(rfvtxtM);
txtM.ValidationGroup = "Mandatory";
}
pnlDynamics.Controls.Add(txtM);

lt2 = new Literal();
lt2.Text = "
";
pnlDynamics.Controls.Add(lt2);

break;
}
#endregion
}

}
groupSeqId++;
Maintain();
}
}
catch (Exception ex)
{
ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "alertMessage", "alert('" + ex.Message + "')", true);
}
}

protected void Maintain()
{
if (ViewState["dtQues"] != null)
{
DataTable dtQuestions = ViewState["dtQues"] as DataTable;
if (groupSeqId < dtQuestions.Rows.Count)
{
ViewState["GrpID"] = null;
string GrpId = dtQuestions.Rows[groupSeqId]["GroupId"].ToString();
ViewState["GrpID"] = dtQuestions.Rows[groupSeqId]["QuesId"].ToString();
if (GrpId == "1")
RecreateControls("ddlDynamics", "DropDownList");
else if (GrpId == "2")
RecreateControls("rblDynamics", "RadioButtonList");
else if (GrpId == "3")
RecreateControls("cblDynamics", "CheckBoxList");
else if (GrpId == "4")
RecreateControls("txtDynamics", "TextBox");
else if (GrpId == "5")
RecreateControls("txtMDynamics", "TextBox");
}
}
}

protected void DataTable()
{

}

protected void btnSave_Click(object sender, EventArgs e)
{
try
{
Maintain();
RequiredFieldValidator rf = new RequiredFieldValidator();
foreach (Control c in pnlDynamics.Controls)
{
if (c is TextBox)
{
TextBox txt = c as TextBox;
if (txt.ValidationGroup != null && string.IsNullOrEmpty(txt.Text))
{
rf.ErrorMessage = "This field cannot be blank";
rf.Visible = true;
txt.Focus();
return;
}
}
if (c is DropDownList)
{
DropDownList ddl = c as DropDownList;
if (ddl.ValidationGroup != null && ddl.SelectedValue=="0")
{
rf.ErrorMessage = "This field cannot be blank";
rf.Visible = true;
ddl.Focus();
return;
}
}
if (c is RadioButtonList)
{
RadioButtonList rbl = c as RadioButtonList;
if (rbl.ValidationGroup != null && string.IsNullOrEmpty(rbl.SelectedValue))
{
rf.ErrorMessage = "This field cannot be blank";
rf.Visible = true;
rbl.Focus();
return;
}
}
if (c is CheckBoxList)
{
CheckBoxList cbl = c as CheckBoxList;
if (cbl.ValidationGroup != null && string.IsNullOrEmpty(cbl.SelectedValue))
{
rf.ErrorMessage = "This field cannot be blank";
rf.Visible = true;
cbl.Focus();
return;
}
}
}


string[] ctrls = Request.Form.ToString().Split('&');
string quseid = string.Empty;
string result = string.Empty;
DataTable tableProductAns;
if (ViewState["dtProduct"] != null)
{
tableProductAns = new DataTable();
tableProductAns.Columns.Add("OrderId", typeof(int));
tableProductAns.Columns.Add("QuesId", typeof(string));
tableProductAns.Columns.Add("Ans", typeof(string));
}
else
{
tableProductAns = ViewState["dtProduct"] as DataTable;
}

#region getValues from Dynamic
for (int count = 0; count < ctrls.Length; count++)
{
if (ctrls[count].ContainsIgnoreCase("Dynamics"))
{
quseid += ctrls[count].Split('=')[0].Split('-')[1] + ",";
result += ctrls[count].Split('=')[1] + ",";
}

}
#endregion

string[] Ques = quseid.TrimEnd(',').Split(',');
string[] Ans = result.TrimEnd(',').Split(',');
int strval = 0;

foreach (string str in Ques)
{
string Qid = string.Empty;
string Answer = string.Empty;

#region getQuesId
if (str.Contains("%"))
Qid = str.Split('%')[0];
else
Qid = str;
int Quesid = objCon.ConToInt(Qid);
#endregion

#region get answer
if (Ans[strval].ToString().Contains("+"))
Answer = Ans[strval].ToString().Replace('+', ' ');
else if (Ans[strval].ToString().Contains("%2b"))
Answer = Ans[strval].ToString().Replace("%2b", "+");
else
Answer = Ans[strval].ToString();
#endregion

#region getName if Checkboxlist exists
if (str.Contains("%"))
{
string query2 = "select * from QuestionItem Where QuesId=" + Quesid + "";
DataTable dtQues = objDal.ExecuteTable(query2);
#region change id of datatable
int Id = 240;
foreach (DataRow dr in dtQues.Rows)
{
dr["ID"] = objCon.ConToStr(Id);
Id++;
}
dtQues.AcceptChanges();
#endregion

#region getItem Name
foreach (DataRow row in dtQues.Rows)
{
if (objCon.ConToInt(row["Id"]) == objCon.ConToInt(str.Split('%')[1]))
{
Answer = row["ItemName"].ToString();
}
}
#endregion

}
#endregion

#region insert into table ProductAns
//string query = @"INSERT INTO [ProductAns] ([ORDERID] , [QUESID] , [ANS])VALUES (@ORDERID , @QUESID , @ANS)";
//SqlParameter[] param = new SqlParameter[4];
//param[1] = new SqlParameter("@ORDERID", 1);
//param[2] = new SqlParameter("@QUESID", Quesid);
//param[3] = new SqlParameter("@ANS", Answer);
//objDal.ExecuteData(query, param);
tableProductAns.Rows.Add(1, Quesid, Answer);
#endregion
strval++;

ViewState["dtProduct"] = tableProductAns;
}
// Clear();
ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "alertMessage", "alert('" +"Data Saved Successfully" + "')", true);

}
catch(Exception ex)
{
ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "alertMessage", "alert('" + ex.Message + "')", true);
}
}

protected void Clear()
{
if (pnlDynamics.Controls.Count > 0)
pnlDynamics.Controls.Clear();
bindProductCheckBoxList();
ViewState["dtQues"] = null;
}
}
}
 
Share this answer
 
// method for get questions
     private void getProduct(string ProductId)
     {
         try
         {

             if (!string.IsNullOrEmpty(ProductId))
             {
                 ViewState["dtQues"] = null;
                 string getQuesId = "SELECT DISTINCT(GROUPID) FROM PRODUCTKIT WHERE PRODUCTID = (" + ProductId + ")";
                 DataTable dtQuesId = objDal.ExecuteTable(getQuesId);
                 string qId = string.Empty;
                 foreach (DataRow dr in dtQuesId.Rows)
                 {
                     qId += dr["GroupId"].ToString() + ",";
                 }
                 string getQues = @"SELECT QUESID ,NAME ,  DESCRIPTION ,GROUPID , ISREQUIERED  FROM QUESTION WHERE QUESID IN (" + qId.TrimEnd(',') + ")  ORDER BY QUESID ASC";
                 DataTable dtQues = objDal.ExecuteTable(getQues);
                 ViewState["dtQues"] = dtQues;
                 #region Create Question
                 try
                 {

                     if (Session["dtProduct"] != null)
                     {
                         SecondTimeControl();
                         Fillvalue();
                     }
                     else
                     {
                         NewControls();
                     }
                     //}
                 }
                 catch (Exception ex)
                 {
                     ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "alertMessage", "alert('" + ex.Message + "')", true);
                 }

                 #endregion
             }
         }
         catch (Exception ex)
         {
             ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "alertMessage", "alert('" + ex.Message + "')", true);
         }
     }

     protected void NewControls()
     {
         DataTable dtQuestions = new DataTable();
         if(Session["dtProduct"]!=null)
             dtQuestions = Session["dtProduct"] as DataTable;
         else
             dtQuestions = ViewState["dtQues"] as DataTable;


         int id = 0;
         #region dynamic controls
         foreach (DataRow dr in dtQuestions.Rows)
         {
             id = objCon.ConToInt(dr["QuesId"]);

             #region label
             Label lbQues = new Label();
             lbQues.Text = "Question : " + dr["Name"].ToString();
             lbQues.ID = "lbQues-" + id.ToString();
             lbQues.CssClass = "question";
             pnlDynamics.Controls.Add(lbQues);

             //Label lblQues = new Label();
             //lblQues.Text = dr["Name"].ToString();
             //lblQues.ID = "lblQues-" + id.ToString();
             //lblQues.CssClass = "question h1";
             //pnlDynamics.Controls.Add(lblQues);

             //Literal lt1 = new Literal();
             //lt1.Text = "<br/>";
             //pnlDynamics.Controls.Add(lt1);

             Label lbAns = new Label();
             lbAns.Text = "Answer : ";
             lbAns.ID = "lbAns-" + id.ToString();
             lbAns.CssClass = "answer";
             pnlDynamics.Controls.Add(lbAns);

             #endregion
             string getQuesItem = @"SELECT *  FROM QUESTIONITEM WHERE QUESID =" + dr["QuesId"].ToString() + "";
             DataTable dtQuesItem = objDal.ExecuteTable(getQuesItem);

             #region creating answers options
             //DropDownList
             if (dr["GroupId"].ToString() == "1")
             {
                 DropDownList ddl = new DropDownList();
                 ddl.ID = "ddlDynamics-" + id.ToString();
                 ddl.Items.Clear();
                 ddl.CssClass = "bloodgroup";
                 if (dr["IsReQuiered"].ToString().Trim() == "1")
                 {
                     ddl.ValidationGroup = "Mandatory";
                     Label lblddlError = new Label();
                     lblddlError.ID = "lblddlError-" + ddl.ID;
                     foreach (DataRow dritem in dtQuesItem.Rows)
                     {
                         ddl.Items.Add(new ListItem("" + dritem["ITEMNAME"].ToString() + "", "" + dritem["ITEMNAME"].ToString() + ""));
                         pnlDynamics.Controls.Add(ddl);
                     }

                     ddl.Items.Insert(0, "--Select--");
                     pnlDynamics.Controls.Add(lblddlError);
                 }
                 else
                 {
                     foreach (DataRow dritem in dtQuesItem.Rows)
                     {
                         ddl.Items.Add(new ListItem("" + dritem["ITEMNAME"].ToString() + "", "" + dritem["ITEMNAME"].ToString() + ""));
                         pnlDynamics.Controls.Add(ddl);
                     }
                     ddl.CssClass = "bloodgroup ";
                     ddl.Items.Insert(0, "--Select--");
                 }

             }
             //RadioButtonList
             else if (dr["GroupId"].ToString() == "2")
             {
                 RadioButtonList rbl = new RadioButtonList();
                 rbl.ID = "rblDynamics-" + id.ToString();
                 rbl.Items.Clear();
                 rbl.CssClass = "searchRadioButtons";
                 foreach (DataRow dritem in dtQuesItem.Rows)
                 {
                     rbl.Items.Add(new ListItem("" + dritem["ITEMNAME"].ToString() + "", "" + dritem["ITEMNAME"].ToString() + ""));
                     pnlDynamics.Controls.Add(rbl);
                 }
                 rbl.RepeatColumns = 2;
                 rbl.RepeatDirection = System.Web.UI.WebControls.RepeatDirection.Horizontal;
                 rbl.RepeatLayout = RepeatLayout.Flow;
                 rbl.SelectedIndex = 0;
             }
             //CheckBoxList
             else if (dr["GroupId"].ToString() == "3")
             {
                 CheckBoxList cbl = new CheckBoxList();
                 cbl.Items.Clear();
                 cbl.ID = "cblDynamics-" + id.ToString();
                 cbl.CssClass = "checkBoxLists";
                 if (dr["IsReQuiered"].ToString().Trim() == "1")
                 {
                     cbl.ValidationGroup = "Mandatory";
                     Label lblcblError = new Label();
                     lblcblError.ID = "lblcblError-" + cbl.ID;
                     foreach (DataRow dritem in dtQuesItem.Rows)
                     {
                         cbl.Items.Add(new ListItem("" + dritem["ITEMNAME"].ToString() + "", "" + dritem["ID"].ToString() + ""));
                         pnlDynamics.Controls.Add(cbl);
                     }
                     pnlDynamics.Controls.Add(lblcblError);
                 }
                 else
                 {
                     foreach (DataRow dritem in dtQuesItem.Rows)
                     {
                         cbl.Items.Add(new ListItem("" + dritem["ITEMNAME"].ToString() + "", "" + dritem["ID"].ToString() + ""));
                         pnlDynamics.Controls.Add(cbl);
                     }
                 }
                 cbl.RepeatColumns = 4;
                 cbl.RepeatDirection = System.Web.UI.WebControls.RepeatDirection.Horizontal;
                 cbl.RepeatLayout = RepeatLayout.Flow;

             }
             else if (dr["GroupId"].ToString() == "4")
             {
                 TextBox txt = new TextBox();
                 txt.ID = "txtDynamics-" + id.ToString();
                 txt.CssClass = "textarea";
                 if (dr["IsReQuiered"].ToString().Trim() == "1")
                 {
                     txt.ValidationGroup = "Mandatory";
                     Label lbltxtError = new Label();
                     lbltxtError.ID = "lbltxtError-" + txt.ID;
                     lbltxtError.Text = string.Empty;
                     pnlDynamics.Controls.Add(txt);
                     pnlDynamics.Controls.Add(lbltxtError);
                 }
                 else
                 {
                     pnlDynamics.Controls.Add(txt);
                 }

             }
             else
             {
                 TextBox txtM = new TextBox();
                 txtM.ID = "txtMDynamics-" + id.ToString();
                 txtM.TextMode = TextBoxMode.MultiLine;
                 txtM.CssClass = "textarea";
                 if (dr["IsReQuiered"].ToString().Trim() == "1")
                 {
                     txtM.ValidationGroup = "Mandatory";
                     Label lbltxtMError = new Label();
                     lbltxtMError.ID = "lbltxtMError-" + txtM.ID;
                     lbltxtMError.Text = string.Empty;
                     pnlDynamics.Controls.Add(lbltxtMError);
                 }
                 else
                 {
                     pnlDynamics.Controls.Add(txtM);
                 }
             }

             Literal lt2 = new Literal();
             lt2.Text = "<br/>";
             pnlDynamics.Controls.Add(lt2);
             #endregion
         }
         #endregion
         if (Session["dtProduct"] != null)
             Fillvalue();


     }

     protected void SecondTimeControl()
     {
         try
         {
             #region dynamic controls for second time
             DataTable exist = Session["dtProduct"] as DataTable;
             #region get previous data
             string QuesId = string.Empty;
             foreach (DataRow dr in exist.Rows)
             {
                 QuesId += dr["QuesId"] + ",";
             }
             string getPrevQues = @"SELECT QUESID ,NAME ,  DESCRIPTION ,GROUPID , ISREQUIERED  FROM QUESTION WHERE QUESID IN (" + QuesId.TrimEnd(',') + ")  ORDER BY QUESID ASC";
             DataTable dtPrevQues = objDal.ExecuteTable(getPrevQues);
             DataTable dtPrvDup = objDal.ExecuteTable(getPrevQues);
             #endregion

             DataTable dtQuestions = new DataTable();
             #region get new data
             if (!string.IsNullOrEmpty(ProductId))
             {
                 string getQuesId = "SELECT DISTINCT(GROUPID) FROM PRODUCTKIT WHERE PRODUCTID = (" + ProductId + ")";
                 DataTable dtQuesId = objDal.ExecuteTable(getQuesId);
                 string qId = string.Empty;
                 foreach (DataRow dr in dtQuesId.Rows)
                 {
                     qId += dr["GroupId"].ToString() + ",";
                 }

                 string getQues = @"SELECT QUESID ,NAME ,  DESCRIPTION ,GROUPID , ISREQUIERED  FROM QUESTION WHERE QUESID IN (" + qId.TrimEnd(',') + ")  ORDER BY QUESID ASC";
                 dtQuestions = objDal.ExecuteTable(getQues);
             }
             //}

             #endregion


             DataTable dtAllForDup = new DataTable();
             dtPrvDup.Merge(dtQuestions);
             dtAllForDup = dtPrvDup;

             #region remove duplicate records
             Hashtable hTable = new Hashtable();
             string dupid = string.Empty;
             foreach (DataRow drow in dtPrvDup.Rows)
             {
                 if (hTable.Contains(drow["QuesId"]))
                 {
                     dupid += drow["QuesId"].ToString() + ",";
                 }
                 else
                     hTable.Add(drow["QuesId"], string.Empty);
             }

             foreach (string strs in dupid.TrimEnd(',').Split(','))
             {
                 if (dtQuestions.Rows.Count > 0)
                 {
                     for (int i = dtQuestions.Rows.Count - 1; i >= 0; i--)
                     {
                         if (dtQuestions.Rows[i]["QuesId"].ToString() == strs)
                             dtQuestions.Rows[i].Delete();
                         dtQuestions.AcceptChanges();
                     }
                 }
             }

             #endregion

             ViewState["dtQues"] = null;
             DataTable dtAllQues = new DataTable();
             dtAllQues = dtPrevQues;
             dtAllQues.Merge(dtQuestions);

             int id = 0;
             #region dynamic controls
             foreach (DataRow dr in dtPrevQues.Rows)
             {
                 id = objCon.ConToInt(dr["QuesId"]);

                 #region label
                 Label lbQues = new Label();
                 lbQues.Text = "Question : " + dr["Name"].ToString();
                 lbQues.ID = "lbQues-" + id.ToString();
                 lbQues.CssClass = "question";
                 pnlDynamics.Controls.Add(lbQues);

                 //Label lblQues = new Label();
                 //lblQues.Text = dr["Name"].ToString();
                 //lblQues.ID = "lblQues-" + id.ToString();
                 //lblQues.CssClass = "question h1";
                 //pnlDynamics.Controls.Add(lblQues);

                 //Literal lt1 = new Literal();
                 //lt1.Text = "<br/>";
                 //pnlDynamics.Controls.Add(lt1);

                 Label lbAns = new Label();
                 lbAns.Text = "Answer : ";
                 lbAns.ID = "lbAns-" + id.ToString();
                 lbAns.CssClass = "answer";
                 pnlDynamics.Controls.Add(lbAns);
                 #endregion

                 string getQuesItem = @"SELECT *  FROM QUESTIONITEM WHERE QUESID =" + dr["QuesId"].ToString() + "";
                 DataTable dtQuesItem = objDal.ExecuteTable(getQuesItem);

                 #region creating answers options
                 //DropDownList
                 if (dr["GroupId"].ToString() == "1")
                 {
                     DropDownList ddl = new DropDownList();
                     ddl.ID = "ddlDynamics-" + id.ToString();
                     ddl.Items.Clear();
                     ddl.CssClass = "bloodgroup";
                     if (dr["IsReQuiered"].ToString().Trim() == "1")
                     {
                         ddl.ValidationGroup = "Mandatory";
                         Label lblddlError = new Label();
                         lblddlError.ID = "lblddlError-" + ddl.ID;
                         foreach (DataRow dritem in dtQuesItem.Rows)
                         {
                             ddl.Items.Add(new ListItem("" + dritem["ITEMNAME"].ToString() + "", "" + dritem["ITEMNAME"].ToString() + ""));
                             pnlDynamics.Controls.Add(ddl);
                         }

                         ddl.Items.Insert(0, "--Select--");
                         pnlDynamics.Controls.Add(lblddlError);
                     }
                     else
                     {
                         foreach (DataRow dritem in dtQuesItem.Rows)
                         {
                             ddl.Items.Add(new ListItem("" + dritem["ITEMNAME"].ToString() + "", "" + dritem["ITEMNAME"].ToString() + ""));
                             pnlDynamics.Controls.Add(ddl);
                         }
                         ddl.CssClass = "bloodgroup ";
                         ddl.Items.Insert(0, "--Select--");
                     }

                 }
                 //RadioButtonList
                 else if (dr["GroupId"].ToString() == "2")
                 {
                     RadioButtonList rbl = new RadioButtonList();
                     rbl.ID = "rblDynamics-" + id.ToString();
                     rbl.Items.Clear();
                     rbl.CssClass = "searchRadioButtons";
                     foreach (DataRow dritem in dtQuesItem.Rows)
                     {
                         rbl.Items.Add(new ListItem("" + dritem["ITEMNAME"].ToString() + "", "" + dritem["ITEMNAME"].ToString() + ""));
                         pnlDynamics.Controls.Add(rbl);
                     }
                     rbl.RepeatColumns = 2;
                     rbl.RepeatDirection = System.Web.UI.WebControls.RepeatDirection.Horizontal;
                     rbl.RepeatLayout = RepeatLayout.Flow;
                     rbl.SelectedIndex = 0;
                 }
                 //CheckBoxList
                 else if (dr["GroupId"].ToString() == "3")
                 {
                     CheckBoxList cbl = new CheckBoxList();
                     cbl.Items.Clear();
                     cbl.ID = "cblDynamics-" + id.ToString();
                     cbl.CssClass = "checkBoxLists";
                     if (dr["IsReQuiered"].ToString().Trim() == "1")
                     {
                         cbl.ValidationGroup = "Mandatory";
                         Label lblcblError = new Label();
                         lblcblError.ID = "lblcblError-" + cbl.ID;
                         foreach (DataRow dritem in dtQuesItem.Rows)
                         {
                             cbl.Items.Add(new ListItem("" + dritem["ITEMNAME"].ToString() + "", "" + dritem["ID"].ToString() + ""));
                             pnlDynamics.Controls.Add(cbl);
                         }
                         pnlDynamics.Controls.Add(lblcblError);
                     }
                     else
                     {
                         foreach (DataRow dritem in dtQuesItem.Rows)
                         {
                             cbl.Items.Add(new ListItem("" + dritem["ITEMNAME"].ToString() + "", "" + dritem["ID"].ToString() + ""));
                             pnlDynamics.Controls.Add(cbl);
                         }
                     }
                     cbl.RepeatColumns = 4;
                     cbl.RepeatDirection = System.Web.UI.WebControls.RepeatDirection.Horizontal;
                     cbl.RepeatLayout = RepeatLayout.Flow;

                 }
                 else if (dr["GroupId"].ToString() == "4")
                 {
                     TextBox txt = new TextBox();
                     txt.ID = "txtDynamics-" + id.ToString();
                     txt.CssClass = "textarea";
                     if (dr["IsReQuiered"].ToString().Trim() == "1")
                     {
                         txt.ValidationGroup = "Mandatory";
                         Label lbltxtError = new Label();
                         lbltxtError.ID = "lbltxtError-" + txt.ID;
                         lbltxtError.Text = string.Empty;
                         pnlDynamics.Controls.Add(txt);
                         pnlDynamics.Controls.Add(lbltxtError);
                     }
                     else
                     {
                         pnlDynamics.Controls.Add(txt);
                     }
                 }
                 else
                 {
                     TextBox txtM = new TextBox();
                     txtM.ID = "txtMDynamics-" + id.ToString();
                     txtM.TextMode = TextBoxMode.MultiLine;
                     txtM.CssClass = "textarea";
                     if (dr["IsReQuiered"].ToString().Trim() == "1")
                     {
                         txtM.ValidationGroup = "Mandatory";
                         Label lbltxtMError = new Label();
                         lbltxtMError.ID = "lbltxtMError-" + txtM.ID;
                         lbltxtMError.Text = string.Empty;
                         pnlDynamics.Controls.Add(lbltxtMError);
                     }
                     else
                     {
                         pnlDynamics.Controls.Add(txtM);
                     }
                 }

                 Literal lt2 = new Literal();
                 lt2.Text = "<br/>";
                 pnlDynamics.Controls.Add(lt2);
                 #endregion
             }


             #endregion

             ViewState["dtQues"] = dtAllQues;// dtPrevQues;


             #endregion
         }
         catch
         {
         }
     }

     protected void Fillvalue()
     {
         DataTable dtVal = new DataTable();
         dtVal = Session["dtProduct"] as DataTable;

         #region check validation
         foreach (Control c in pnlDynamics.Controls)
         {
             try
             {
                 //foreach (DataRow dr in dtVal.Rows)
                 //{
                     //TextBox
                     if (c is TextBox)
                     {
                         TextBox txt = c as TextBox;
                         foreach (DataRow drtxt in dtVal.Rows)
                         {
                             if (txt.ID == "txtDynamics-" + drtxt["QuesId"] || txt.ID == "txtMDynamics-" + drtxt["QuesId"])
                             {
                                 txt.Text = drtxt["Ans"].ToString();
                             }
                         }
                     }

                     //RadioButtonList
                     if (c is RadioButtonList)
                     {
                         RadioButtonList rbl = c as RadioButtonList;
                         foreach (DataRow drrbl in dtVal.Rows)
                         {
                             if (rbl.ID == "rblDynamics-" + drrbl["QuesId"])
                             {
                                 rbl.SelectedValue = drrbl["Ans"].ToString();
                             }
                         }
                     }

                     //DropDownList
                     if (c is DropDownList)
                     {
                         DropDownList ddl = c as DropDownList;
                         foreach (DataRow drcbl in dtVal.Rows)
                         {
                             if (ddl.ID == "ddlDynamics-" + drcbl["QuesId"])
                             {
                                 ddl.SelectedValue = drcbl["Ans"].ToString();
                             }
                         }
                     }

                     //checkboixlist
                     if (c is CheckBoxList)
                     {
                         CheckBoxList cbl = c as CheckBoxList;
                         foreach (DataRow drcbl in dtVal.Rows)
                         {
                             if (cbl.ID == "cblDynamics-" + drcbl["QuesId"])
                             {
                                 foreach (ListItem li in cbl.Items)
                                 {
                                     if (li.Text == drcbl["Ans"].ToString())
                                     {
                                         li.Selected = true;
                                     }
                                 }
                             }
                         }
                     }
               //  }
             }
             catch (Exception ex)
             {

             }

         }
         #endregion

     }

     protected void Maintain()
     {
         if (ViewState["dtQues"] != null)
         {
             DataTable dtQuestions = ViewState["dtQues"] as DataTable;
             if (groupSeqId < dtQuestions.Rows.Count)
             {
                 ViewState["GrpID"] = null;
                 string GrpId = dtQuestions.Rows[groupSeqId]["GroupId"].ToString();
                 ViewState["GrpID"] = dtQuestions.Rows[groupSeqId]["QuesId"].ToString();
                 if (GrpId == "1")
                     RecreateControls("ddlDynamics", "DropDownList");
                 else if (GrpId == "2")
                     RecreateControls("rblDynamics", "RadioButtonList");
                 else if (GrpId == "3")
                     RecreateControls("cblDynamics", "CheckBoxList");
                 else if (GrpId == "4")
                     RecreateControls("txtDynamics", "TextBox");
                 else if (GrpId == "5")
                     RecreateControls("txtMDynamics", "TextBox");
             }
         }
     }

     private void RecreateControls(string ctrlPrefix, string ctrlType)
     {
         try
         {
             string[] ctrls = Request.Form.ToString().Split('&');
             if (ViewState["dtQues"] != null)
             {
                 DataTable dtQuestions = ViewState["dtQues"] as DataTable;
                 Control c = null;
                 Literal lt2;
                 int k = Convert.ToInt32(dtQuestions.Rows[groupSeqId]["QuesId"].ToString());

                 #region label
                 Label lbQues = new Label();
                 lbQues.Text = "Question : " + dtQuestions.Rows[groupSeqId]["Name"].ToString();
                 lbQues.ID = "lbQues-" + k.ToString() ;
                 lbQues.CssClass = "question";
                 pnlDynamics.Controls.Add(lbQues);

                 //Label lblQues = new Label();
                 //lblQues.ID = "lblQues-" + k.ToString();
                 //lblQues.Text = dtQuestions.Rows[groupSeqId]["Name"].ToString();// dr.["Name"].ToString();
                 //lblQues.CssClass = "question h1";
                 //pnlDynamics.Controls.Add(lblQues);

                 //Literal lt1 = new Literal();
                 //lt1.Text = "<br/>";
                 //pnlDynamics.Controls.Add(lt1);


                 Label lbAns = new Label();
                 lbAns.ID = "lbAns-" + k.ToString();
                 lbAns.Text = "Answer : ";
                 lbAns.CssClass = "answer";
                 pnlDynamics.Controls.Add(lbAns);

                 #endregion

                 string getQuesItem = @"SELECT *  FROM QUESTIONITEM WHERE QUESID =" + dtQuestions.Rows[groupSeqId]["QuesId"].ToString() + "";
                 DataTable dtQuesItem = objDal.ExecuteTable(getQuesItem);
                 bool exists = false;
                 for (int i = 0; i < ctrls.Length; i++)
                 {
                     if (ctrls[i].Contains(ctrlPrefix + "-" + k.ToString()))
                     {
                         string ctrlName = ctrls[i].Split('=')[0];
                         string ctrlValue = ctrls[i].Split('=')[1];
                         //Decode the Value
                         ctrlValue = Server.UrlDecode(ctrlValue);
                         #region child controls
                         if (ctrlType == "DropDownList" && ctrlPrefix.Contains("ddlDynamics"))
                         {
                             DropDownList ddl = new DropDownList();
                             ddl.ID = ctrlName;
                             ddl.Items.Clear();
                             ddl.CssClass = "bloodgroup";
                             if (dtQuestions.Rows[groupSeqId]["IsReQuiered"].ToString() == "1")
                             {
                                 ddl.ValidationGroup = "Mandatory";
                                 Label lblddlError = new Label();
                                 lblddlError.ID = "lblddlError-" + ddl.ID;
                                 lblddlError.Text = string.Empty;
                                 foreach (DataRow dritem in dtQuesItem.Rows)
                                 {
                                     ddl.Items.Add(new ListItem("" + dritem["ITEMNAME"].ToString() + "", "" + dritem["ITEMNAME"].ToString() + ""));
                                     pnlDynamics.Controls.Add(ddl);
                                 }
                                 ddl.Items.Insert(0, "--Select--");
                                 ddl.SelectedValue = ctrlValue;
                                 pnlDynamics.Controls.Add(lblddlError);
                             }
                             else
                             {
                                 foreach (DataRow dritem in dtQuesItem.Rows)
                                 {
                                     ddl.Items.Add(new ListItem("" + dritem["ITEMNAME"].ToString() + "", "" + dritem["ITEMNAME"].ToString() + ""));
                                     pnlDynamics.Controls.Add(ddl);
                                 }
                                 ddl.Items.Insert(0, "--Select--");
                                 ddl.SelectedValue = ctrlValue;
                             }

                             lt2 = new Literal();
                             lt2.Text = "<br/>";
                             pnlDynamics.Controls.Add(lt2);

                             break;

                         }
                         //  break;

                         if (ctrlType == "RadioButtonList" && ctrlPrefix.Contains("rblDynamics"))
                         {
                             RadioButtonList rbl = new RadioButtonList();
                             rbl.ID = ctrlName;
                             rbl.CssClass = "searchRadioButtons";
                             foreach (DataRow dritem in dtQuesItem.Rows)
                             {
                                 rbl.Items.Add(new ListItem("" + dritem["ITEMNAME"].ToString() + "", "" + dritem["ITEMNAME"].ToString() + ""));
                                 pnlDynamics.Controls.Add(rbl);
                             }
                             rbl.SelectedValue = ctrlValue;
                             rbl.RepeatColumns = 2;
                             rbl.RepeatDirection = System.Web.UI.WebControls.RepeatDirection.Horizontal;
                             rbl.RepeatLayout = RepeatLayout.Flow;

                             lt2 = new Literal();
                             lt2.Text = "<br/>";
                             pnlDynamics.Controls.Add(lt2);

                             break;
                         }
                         //   break;

                         if (ctrlType == "CheckBoxList" && ctrlPrefix.Contains("cblDynamic"))
                         {
                             string[] vals = Request.Form.ToString().Split('&');
                             string quseid1 = string.Empty;
                             for (int count = 0; count < vals.Length; count++)
                             {
                                 if (ctrls[count].Contains("cblDynamics-" + ctrlName.Split('-')[1].Split('%')[0]))
                                 {
                                     quseid1 += vals[count].Substring(ctrlName.Length - 3, 3) + ",";
                                 }

                             }
                             string[] Ques = quseid1.TrimEnd(',').Split(',');
                             CheckBoxList cbl = new CheckBoxList();
                             cbl.ID = ctrlName;
                             cbl.CssClass = "checkBoxLists";
                             if (dtQuestions.Rows[groupSeqId]["IsReQuiered"].ToString() == "1")
                             {
                                 cbl.ValidationGroup = "Mandatory";
                                 Label lblcblError = new Label();
                                 lblcblError.ID = "lblcblError-" + cbl.ID;
                                 foreach (DataRow dritem in dtQuesItem.Rows)
                                 {
                                     cbl.Items.Add(new ListItem("" + dritem["ITEMNAME"].ToString() + "", "" + dritem["ID"].ToString() + ""));
                                     pnlDynamics.Controls.Add(cbl);
                                 }
                                 pnlDynamics.Controls.Add(lblcblError);
                             }
                             else
                             {
                                 foreach (DataRow dritem in dtQuesItem.Rows)
                                 {
                                     cbl.Items.Add(new ListItem("" + dritem["ITEMNAME"].ToString() + "", "" + dritem["ITEMNAME"].ToString() + ""));
                                     pnlDynamics.Controls.Add(cbl);
                                 }
                             }
                             cbl.RepeatColumns = 4;
                             cbl.RepeatDirection = System.Web.UI.WebControls.RepeatDirection.Horizontal;
                             cbl.RepeatLayout = RepeatLayout.Flow;
                                 foreach (string str in Ques)
                                 {
                                     string strs = str[str.Length - 1].ToString();
                                         cbl.Items[objCon.ConToInt(strs)].Selected = true;
                                 }

                             exists = true;
                             lt2 = new Literal();
                             lt2.Text = "<br/>";
                             pnlDynamics.Controls.Add(lt2);
                             break;

                         }
                         // break;
                         if (ctrlType == "TextBox" && ctrlPrefix.Contains("txtDynamics"))
                         {
                             TextBox txt = new TextBox();
                             txt.ID = ctrlName;
                             txt.Text = ctrlValue;
                             txt.CssClass = "textarea";
                             if (dtQuestions.Rows[groupSeqId]["IsReQuiered"].ToString() == "1")
                             {
                                 txt.ValidationGroup = "Mandatory";
                                 Label lbltxtError = new Label();
                                 lbltxtError.ID = "lbltxtError-" + txt.ID;
                                 lbltxtError.Text = string.Empty;
                                 pnlDynamics.Controls.Add(txt);
                                 pnlDynamics.Controls.Add(lbltxtError);

                             }
                             else
                             {
                                 pnlDynamics.Controls.Add(txt);
                             }

                             lt2 = new Literal();
                             lt2.Text = "<br/>";
                             pnlDynamics.Controls.Add(lt2);

                             break;

                         }
                         // break;
                         if (ctrlType == "TextBox" && ctrlPrefix.Contains("txtMDynamics"))
                         {
                             TextBox txtM = new TextBox();
                             txtM.ID = ctrlName;
                             txtM.Text = ctrlValue;
                             txtM.TextMode = TextBoxMode.MultiLine;
                             txtM.CssClass = "textarea";
                             if (dtQuestions.Rows[groupSeqId]["IsReQuiered"].ToString() == "1")
                             {
                                 txtM.ValidationGroup = "Mandatory";
                                 Label lbltxtMError = new Label();
                                 lbltxtMError.ID = "lbltxtMError-" + txtM.ID;
                                 lbltxtMError.Text = string.Empty;
                                 pnlDynamics.Controls.Add(txtM);
                                 pnlDynamics.Controls.Add(lbltxtMError);
                             }
                             else
                             {
                                 pnlDynamics.Controls.Add(txtM);
                             }

                             lt2 = new Literal();
                             lt2.Text = "<br/>";
                             pnlDynamics.Controls.Add(lt2);

                             break;
                         }

                         #endregion

                     }
                 }
                 if (exists == false && ctrlPrefix == "cblDynamics" && ctrlType == "CheckBoxList")
                 {
                         CheckBoxList cbl = new CheckBoxList();
                         cbl.Items.Clear();
                         cbl.ID = "cblDynamics-" + k.ToString();
                         cbl.CssClass = "checkBoxLists";
                         if (dtQuestions.Rows[groupSeqId]["IsReQuiered"].ToString() == "1")
                         {
                             cbl.ValidationGroup = "Mandatory";
                             Label lblcblError = new Label();

                             lblcblError.ID = "lblcblError-" + cbl.ID;
                             foreach (DataRow dritem in dtQuesItem.Rows)
                             {
                                 cbl.Items.Add(new ListItem("" + dritem["ITEMNAME"].ToString() + "", "" + dritem["ID"].ToString() + ""));
                                 pnlDynamics.Controls.Add(cbl);
                             }
                             pnlDynamics.Controls.Add(lblcblError);
                         }
                         else
                         {
                             foreach (DataRow dritem in dtQuesItem.Rows)
                             {
                                 cbl.Items.Add(new ListItem("" + dritem["ITEMNAME"].ToString() + "", "" + dritem["ITEMNAME"].ToString() + ""));
                                 pnlDynamics.Controls.Add(cbl);
                             }
                         }
                         cbl.RepeatColumns = 4;
                         cbl.RepeatDirection = System.Web.UI.WebControls.RepeatDirection.Horizontal;
                         cbl.RepeatLayout = RepeatLayout.Flow;
                 }



                 groupSeqId++;
                 Maintain();
             }
         }
         catch (Exception ex)
         {
             ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "alertMessage", "alert('" + ex.Message + "')", true);
         }
     }

     protected void btnSave_Click(object sender, EventArgs e)
     {
         try
         {

             Maintain();
             bool check =false;
             #region check validation
             foreach (Control c in pnlDynamics.Controls)
             {
                 try
                 {
                     if (c is TextBox)
                     {
                         TextBox txt = c as TextBox;

                         if (txt.ValidationGroup != null && string.IsNullOrEmpty(txt.Text))
                         {
                             Label lbl = new Label();
                             if (txt.TextMode != TextBoxMode.MultiLine)
                                 lbl = pnlDynamics.FindControl("lbltxtError-" + txt.ID) as Label;
                             else
                                 lbl = pnlDynamics.FindControl("lbltxtMError-" + txt.ID) as Label;
                             lbl.Text = string.Empty;
                             lbl.CssClass = "error";
                             lbl.Text = txt.Text + "This field cannot be blank";
                             check = true;
                         }
                     }

                     if (c is DropDownList)
                     {
                         DropDownList ddl = c as DropDownList;
                         if (ddl.ValidationGroup != null && ddl.SelectedValue == "--Select--")
                         {
                             Label lbl = pnlDynamics.FindControl("lblddlError-" + ddl.ID) as Label;
                             lbl.Text = string.Empty;
                             lbl.CssClass = "error";
                             lbl.Text = "Please select value";
                             check = true;
                         }
                     }
                     if (c is CheckBoxList)
                     {
                         CheckBoxList cbl = c as CheckBoxList;
                         bool count = false;
                         foreach (ListItem li in cbl.Items)
                         {
                             if (li.Selected)
                                 count = true;
                         }
                         if (cbl.ValidationGroup != null && count == false)
                         {
                             Label lbl = pnlDynamics.FindControl("lblcblError-" + cbl.ID) as Label;
                             lbl.Text = string.Empty;
                             lbl.CssClass = "error";
                             lbl.Text = "Please check any value";
                             check = true;
                         }
                     }
                 }
                 catch (Exception ex)
                 {

                 }

             }
             #endregion
             if (check == false)
             {
                 #region save
                 string[] ctrls = Request.Form.ToString().Split('&');
                 string quseid = string.Empty;
                 string result = string.Empty;
                 DataTable tableProductAns = new DataTable();
                 tableProductAns.Columns.Add("OrderId", typeof(int));
                 tableProductAns.Columns.Add("QuesId", typeof(string));
                 tableProductAns.Columns.Add("Ans", typeof(string));

                 #region getValues from Dynamic
                 for (int count = 0; count < ctrls.Length; count++)
                 {
                     if (ctrls[count].ContainsIgnoreCase("Dynamics"))
                     {
                         quseid += ctrls[count].Split('=')[0].Split('-')[1] + ",";
                         result += ctrls[count].Split('=')[1] + ",";
                     }

                 }
                 #endregion

                 string[] Ques = quseid.TrimEnd(',').Split(',');
                 string[] Ans = result.TrimEnd(',').Split(',');
                 int strval = 0;

                 foreach (string str in Ques)
                 {
                     #region get all answer
                     string Qid = string.Empty;
                     string Answer = string.Empty;

                     #region getQuesId
                     if (str.Contains("%"))
                         Qid = str.Split('%')[0];
                     else
                         Qid = str;
                     int Quesid = objCon.ConToInt(Qid);
                     #endregion

                     #region get answer
                     if (Ans[strval].ToString().Contains("+"))
                         Answer = Ans[strval].ToString().Replace('+', ' ');
                     else if (Ans[strval].ToString().Contains("%2b"))
                         Answer = Ans[strval].ToString().Replace("%2b", "+");
                     else
                         Answer = Ans[strval].ToString();
                     #endregion

                     #region getName if Checkboxlist exists
                     if (str.Contains("%"))
                     {
                         string query2 = "select *  from QuestionItem Where QuesId=" + Quesid + "";
                         DataTable dtQues = objDal.ExecuteTable(query2);

                         #region change id of datatable
                         int Id = 240;
                         foreach (DataRow dr in dtQues.Rows)
                         {
                             dr["ID"] = objCon.ConToStr(Id);
                             Id++;
                         }
                         dtQues.AcceptChanges();
                         #endregion

                         #region getItem Name
                         foreach (DataRow row in dtQues.Rows)
                         {
                             if (objCon.ConToInt(row["Id"]) == objCon.ConToInt(str.Split('%')[1]))
                             {
                                 Answer = row["ItemName"].ToString();
                             }
                         }
                         #endregion

                     }
                     #endregion

                     #endregion
                     if (string.IsNullOrEmpty(Answer) || Answer == "--Select--")
                         Answer = string.Empty;
                     tableProductAns.Rows.Add(0, Quesid, Answer);
                     strval++;
                     Session["dtProduct"] = tableProductAns;
                 }
                 #endregion

                 Response.Redirect(ResolveClientUrl("~/ShoppingCart.aspx?add=true&ReturnUrl=" + Security.UrlEncode(ReturnUrl)));
                // Response.Redirect("default.aspx");
             }
             else
             {
                 ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "alertMessage", "alert('" + "Please fill mandatory questions " + "')", true);
                 return;
             }
            // Clear();
            // ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "alertMessage", "alert('" +"Data Saved Successfully" + "')", true);

         }
         catch(Exception ex)
         {
             ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "alertMessage", "alert('" + ex.Message + "')", true);
         }
     }
 
Share this answer
 

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900