I have made a form in which I have two fields, Name and Products
. Beside Products I have taken a Textbox and a button. I am allowing my user to add more than one textbox and the limit is upto 5 textbox's. Now I am inserting data from this form into my SQL Database
. And Now I want to fetch the data from table and display into the respective Textbox's. I want that on clicking Show All Button all the dynamic Textbox should appear on the form. And if the data is present in the DB for that particular field then it should display as text in these dynamic textbox
.
I have tried doing this-
<div>
<table border="1" width="1000px">
<tr><td colspan="2" align="center"><b>Inserting Data Into Table</b></td></tr>
<tr>
<td class="style1">Name: </td>
<td class="style2">
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox></td>
</tr>
<tr>
<td class="style1">Add Text Box: </td>
<td class="style2">
<asp:TextBox ID="txt1" runat="server"></asp:TextBox>
<asp:Button ID="Button1" runat="server" Text="Add More"
onclick="Button1_Click" /><br />
<asp:PlaceHolder ID="PlaceHolder1" runat="server"></asp:PlaceHolder>
</td>
</tr>
<tr><td colspan="2" align="center">
<asp:Button ID="Button2" runat="server" Text="Submit" onclick="Button2_Click" />
<br />
</td></tr>
</table>
</div><br /><br />
<div>
<table border="1" width="1000px">
<tr><td colspan="2" align="center"><b>Fetching Data And Showing into Textbox</b></td></tr>
<tr>
<td class="style1">Name: </td>
<td class="style2">
<asp:TextBox ID="txtname" runat="server"></asp:TextBox></td>
</tr>
<tr>
<td class="style1">Add Text Box: </td>
<td class="style2">
<asp:TextBox ID="txtt1" runat="server"></asp:TextBox>
<asp:Button ID="Button3" runat="server" Text="Show All"
onclick="Button3_Click" /><br />
<asp:PlaceHolder ID="PlaceHolder2" runat="server"></asp:PlaceHolder>
</td>
</tr>
<tr><td colspan="2" align="center">
<asp:Button ID="Updt" runat="server" Text="Update" onclick="Updt_Click" />
<br />
</td></tr>
</table>
</div>
CS Page:-
General_Logic g1 = new General_Logic();
DataTable dt = new DataTable();
int rows = 0;
List<string> ControlIdList = new List<string>();
int Counter = 1;
TextBox tb = new TextBox();
protected override void LoadViewState(object SavedState)
{
base.LoadViewState(SavedState);
ControlIdList = (List<string>)ViewState["ControlIdList"];
foreach (string Id in ControlIdList)
{
Counter++;
TextBox tb = new TextBox();
tb.ID = Id;
LiteralControl linebreak = new LiteralControl();
PlaceHolder1.Controls.Add(tb);
PlaceHolder1.Controls.Add(linebreak);
}
}
protected void Page_Load(object sender, EventArgs e)
{
show();
}
public void show()
{
dt = g1.return_dt("select product1,product2,product3,product4,product5,name from tbl_products where name='Yo Yo'");
if (dt.Rows.Count > 0)
{
txtname.Text = dt.Rows[0]["name"].ToString();
txtt1.Text = dt.Rows[0]["product1"].ToString();
//TextBox txtb;
int x = 2;
foreach (Control ctrl in PlaceHolder2.Controls)
{
if (ctrl is TextBox)
{
if (x <= 5)
{
if (Counter <= 4)
{
Counter++;
tb.ID = "TextBox" + Counter;
//tb.Text = tb.ID;
tb = (TextBox)ctrl;
LiteralControl linebreak = new LiteralControl("<br />");
tb.Text = dt.Rows[0]["product'" + x + "'"].ToString();
PlaceHolder2.Controls.Add(tb);
PlaceHolder2.Controls.Add(linebreak);
ControlIdList.Add(tb.ID);
ViewState["ControlIdList"] = ControlIdList;
x++;
}
//txtb = (TextBox)ctrl;
//LiteralControl linebreak = new LiteralControl("<br />");
//txtb.Text = dt.Rows[0]["product'" + x + "'"].ToString();
//PlaceHolder2.Controls.Add(txtb);
//PlaceHolder2.Controls.Add(linebreak);
//x++;
}
}
}
}
}
protected void Button1_Click(object sender, EventArgs e)
{
if (Counter <= 4)
{
Counter++;
tb.ID = "TextBox" + Counter;
tb.Text = tb.ID;
LiteralControl linebreak = new LiteralControl("<br />");
PlaceHolder1.Controls.Add(tb);
PlaceHolder1.Controls.Add(linebreak);
ControlIdList.Add(tb.ID);
ViewState["ControlIdList"] = ControlIdList;
}
else
{
Button1.OnClientClick = null;
Response.Write("<script>alert('Maximum Entry is 5');</script>");
}
}
protected void Button2_Click(object sender, EventArgs e)
{
int limit = 4;
string[] DBVALUES = new string[5];
for (int parcount = 0; parcount<=limit; parcount++)
{
if (parcount == 0)
{
DBVALUES[parcount] = txt1.Text;
}
else
{
DBVALUES[parcount] = Request.Form["TextBox" + (parcount + 1).ToString()];
}
}
for (int i = 0; i <= 4; i++)
{
if (DBVALUES[i] == null)
{
DBVALUES[i] = "NULL";
}
}
rows = g1.ExecDB("insert into tbl_products(product1,product2,product3,product4,product5,name) values('" + DBVALUES[0].ToString() + "','" + DBVALUES[1].ToString() + "','" + DBVALUES[2].ToString() + "','" + DBVALUES[3].ToString() + "','" + DBVALUES[4].ToString() + "','"+TextBox1.Text.ToString()+"')");
TextBox1.Text = string.Empty;
txt1.Text = string.Empty;
TextBox txtb;
foreach (Control ctrl in PlaceHolder1.Controls)
{
if (ctrl is TextBox)
{
txtb = (TextBox)ctrl;
txtb.Text = string.Empty;
}
}
Response.Write("<script>alert('Data Inserted!!!');</script>");
}
protected void Updt_Click(object sender, System.EventArgs e)
{
}
protected void Button3_Click(object sender, System.EventArgs e)
{
show();
}
Please guide me where I am doing wrong. I am waiting for your all suggestions.