Hello everyone,
I'm Prateek, trying to create an application that takes user inputs from the controls that are being generated dynamically such as a TextBox or a DropDownList.
These controls are generated from the database values itself i.e. i'm storing all the values that are to be created in a table named 'usertasks'.
Now, everything is working fine and controls are dynamically generated, the user inputs are stored in another table named 'taskEntries'.
The problem I'm facing is with the duplicate values.
For example, there is a query named zone and when user enters the zone in TextBox, there are multiple zone values saved in the table.
below is my ASPX markup:
<%--To preview images--%>
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<script>
$(document).ready(function () {
$("#File1").change(function () {
var previewimages = $("#showimage");
previewimages.html("");
$($(this)[0].files).each(function () {
var file = $(this);
var reader = new FileReader();
reader.onload = function (e) {
var img = $("<img />");
img.attr("style", "margin:5px; height:110px;width: 100px;");
img.attr("src", e.target.result);
previewimages.append(img);
}
reader.readAsDataURL(file[0]);
});
});
});
</script>
<div class="col-md-12">
<div class="form-group">
<asp:PlaceHolder ID="placeholder" runat="server"></asp:PlaceHolder>
</div>
<center><img id="imgNoFile" runat="server" src="content/no-file.gif" width="250" height="140"/></center>
<div id="dvCtrls" runat="server" class="form-group">
<input id="File1" type="file" multiple="multiple" name="File1" accept=".jpg; .jpeg; .png" />
<div class="float-right">
<asp:LinkButton ID="btnSave" runat="server" CssClass="btn btn-outline-dark btn-sm" OnClick="btnsubmit_Click"><i class="fa fa-save"></i> Save Details</asp:LinkButton>
</div>
</div>
<div class="form-group">
<div id="showimage"></div>
</div>
</div>
And here is my c# code behind to create controls dynamically and insert values to the database:
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
CreateDynamicControls();
}
public DataTable CustomFields()
{
DataTable dt = new DataTable();
using (SqlConnection con = new SqlConnection(ConnectionManager.ConString))
{
con.Open();
using (SqlDataAdapter sdr = new SqlDataAdapter("select taskId, deptId, question, inputType, inputID, inputDataValues from usertasks where taskStatus!='0' and taskRem!='1'", con))
{
sdr.Fill(dt);
dvCtrls.Visible = dt.Rows.Count <= 0 ? false : true;
TaskTitle.InnerText = dt.Rows.Count <= 0 ? "You have no tasks lined up!" : "Answer these questions";
imgNoFile.Visible = dt.Rows.Count <= 0 ? true : false;
}
}
return dt;
}
public void CreateDynamicControls()
{
DataTable dt = new DataTable();
string ControlCssClass = "form-control form-control-sm";
dt = CustomFields(); //calling the function which describe the fieldname and fieldtype
if (dt.Rows.Count > 0)
{
for (Int32 i = 0; i < dt.Rows.Count; i++)
{
HtmlGenericControl tr = new HtmlGenericControl("div");
HtmlGenericControl td = new HtmlGenericControl("div");
HtmlGenericControl td1 = new HtmlGenericControl("div");
String TaskID = Convert.ToString(dt.Rows[i]["taskId"]);
String DeptID = Convert.ToString(dt.Rows[i]["deptId"]);
String Question = Convert.ToString(dt.Rows[i]["question"]);
String InputType = Convert.ToString(dt.Rows[i]["inputType"]);
String InputID = Convert.ToString(dt.Rows[i]["inputID"]);
String InputDataValues = Convert.ToString(dt.Rows[i]["inputDataValues"]);
Label lbcustomename = new Label();
lbcustomename.ID = "lbl" + Regex.Replace(InputID, @"[^0-9a-zA-Z]+", "").ToLower().ToString();
lbcustomename.Text = Question;
td.Controls.Add(lbcustomename);
tr.Controls.Add(td);
if (InputType.ToLower().Trim() == "textbox")
{
TextBox txtcustombox = new TextBox();
txtcustombox.ID = InputID;
txtcustombox.CssClass = ControlCssClass;
td1.Controls.Add(txtcustombox);
}
else if (InputType.ToLower().Trim() == "dropdownlist")
{
DropDownList ddllst = new DropDownList();
ddllst.ID = InputID;
ddllst.CssClass = "form-control form-control-sm";
ddllst.Items.Add(new ListItem("Select", "0"));
foreach (var items in InputDataValues.Split(','))
{
ddllst.Items.Add(items.Replace("'", ""));
}
td1.Controls.Add(ddllst);
}
tr.Controls.Add(td1);
placeholder.Controls.Add(tr);
}
}
}
protected void btnsubmit_Click(object sender, EventArgs e)
{
Save();
}
public void Save()
{
DataTable dtFormValues = new DataTable();
dtFormValues.Columns.Add("cdate", typeof(String));
dtFormValues.Columns.Add("ctime", typeof(String));
dtFormValues.Columns.Add("taskID", typeof(String));
dtFormValues.Columns.Add("deptID", typeof(String));
dtFormValues.Columns.Add("empID", typeof(String));
dtFormValues.Columns.Add("question", typeof(String));
dtFormValues.Columns.Add("userInput", typeof(String));
dtFormValues.Columns.Add("imagePath", typeof(String));
DataTable dt = new DataTable();
dt = CustomFields();
if (dt.Rows.Count > 0)
{
for (Int32 i = 0; i < dt.Rows.Count; i++)
{
String TaskID = Convert.ToString(dt.Rows[i]["taskId"]);
String DeptID = Convert.ToString(dt.Rows[i]["deptId"]);
String Question = Convert.ToString(dt.Rows[i]["question"]);
String InputType = Convert.ToString(dt.Rows[i]["inputType"]);
String InputID = Convert.ToString(dt.Rows[i]["inputID"]);
string fname = null, fpath = string.Empty, finalUrl = string.Empty;
dtFormValues.NewRow();
for (int j = 0; j < Request.Files.Count; j++)
{
HttpPostedFile file = Request.Files[j];
if (file.ContentLength > 0)
{
fname = Path.GetFileName(file.FileName);
file.SaveAs(Server.MapPath(Path.Combine("uploads/", fname)));
fpath += Path.Combine("uploads/", fname) + ", ";
finalUrl += "uploads/" + fname + ", ";
}
}
if (InputType.ToLower().Trim() == "textbox")
{
TextBox txtbox = (TextBox)placeholder.FindControl(InputID);
if (txtbox != null)
{
dtFormValues.Rows.Add(dateToday, timeNow, TaskID, DeptID, Session["uname"].ToString(), Question, txtbox.Text, finalUrl);
txtbox.Text = null;
}
}
else if (InputType.ToLower().Trim() == "dropdownlist")
{
DropDownList dropdownlist = (DropDownList)placeholder.FindControl(InputID);
if (dropdownlist != null)
{
dtFormValues.Rows.Add(dateToday, timeNow, TaskID, DeptID, Session["uname"].ToString(), Question, dropdownlist.SelectedValue, finalUrl);
dropdownlist.ClearSelection();
}
}
using (SqlConnection con = new SqlConnection(ConnectionManager.ConString))
{
con.Open();
using (SqlBulkCopy objbulk = new SqlBulkCopy(con))
{
objbulk.DestinationTableName = "taskEntries";
objbulk.ColumnMappings.Add("cdate", "cdate");
objbulk.ColumnMappings.Add("ctime", "ctime");
objbulk.ColumnMappings.Add("taskID", "taskID");
objbulk.ColumnMappings.Add("deptID", "deptID");
objbulk.ColumnMappings.Add("empID", "empID");
objbulk.ColumnMappings.Add("question", "question");
objbulk.ColumnMappings.Add("userInput", "userInput");
objbulk.ColumnMappings.Add("imagePath", "imagePath");
objbulk.WriteToServer(dtFormValues);
}
con.Close();
}
}
}
dtFormValues.Clear();
}
Kindly go through and help me get through this problem.
Thanks in advance!