我想在运行时创建动态文本框。假设我从数据库中获取文本为“# is the capital of India”,现在我想用文本框替换“#”,同时将其呈现给用户,如下所示
<asp:TextBox runat="server" id = "someid"></asp:TextBox> is the capital of India
我能够将文本框和文本组合在一起。但是,我无法访问具有给定 id 的文本框,并且当页面上发生任何事件时,文本框会丢失,因为它们在逻辑上不存在,直到它们的状态被存储。
我还研究了占位符和 Viewstate 的概念来存储动态创建的控件并使它们的 id 可用于方法,但就我而言,我无法满足文本框和文本组合的要求。
我遍历从数据库收到的整个文本并检查是否有任何“#”。是的,那么我想用一个文本框替换它,我可以在该文本框上调用方法将在文本框中输入的值取回数据库并存储它。
eg: text is "#" 是印度的首都
for (int i = 0; i < que.Length; j++) //que holds the text
{
if (que[i] == '#')
{
//Textbox should be created
}
else
{
//the texts should be appended before or after the textbox/textboxes as text demands
}
}
单击按钮时,我将请求传递给数据库,这将向我发送必要的详细信息,即问题文本、选项以及保存当前检查的值等。
protected void BtnLast_Click(object sender, EventArgs e)
{
CheckBox1.Checked = false;
CheckBox2.Checked = false;
CheckBox3.Checked = false;
CheckBox4.Checked = false;
QuestionSet q = new QuestionSet();
StudentB b = new StudentB();
q = b.GetQuestion(1, 1, qid, 'L', 0, Checked, date);
qid = Convert.ToInt32(q.Question_Id);
Checked = q.Checked;
if (q.Question_Type == 11) //indicates its objective Question
{
//ill bind data to checkboxes
}
else if (q.Question_Type == 12) // indicate its fill in the blanks question
{
for (int j = 0; j < que.Length; j++)
{
if (que[j] == '#')
{
count++;
string res = "<input type = 'text' runat = 'server' id ='TxtBoxFillUp" + count + "'/>";
htm = htm.Append(res);
}
else
{
htm = htm.Append(que[j]);
}
}
}
}
任何帮助将不胜感激,在此先感谢。