gpt4 book ai didi

asp.net - asp.net 中的动态控件(文本框)

转载 作者:行者123 更新时间:2023-12-04 04:49:47 25 4
gpt4 key购买 nike

我想在运行时创建动态文本框。
假设我从数据库中获取一个文本为“# 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]);
}
}

}

}

任何帮助将不胜感激,在此先感谢。

最佳答案

以您的方式添加控件不会像 asp.net 创建控件那样创建控件。您必须像往常一样创建控件 .net 对象。

TextBox myNewTextBox = new TextBox() {};
// Set all initial values to it

并将此控制添加到占位符或面板,无论您使用什么。请记住,即使您使用更新面板,asp.net 页面事件也会触发,因此为了维护新创建控件的状态和事件,您必须在页面的 Load 之前很久就创建此类控件。事件触发。 Here是我对另一个类似问题的回答。

关于asp.net - asp.net 中的动态控件(文本框),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17607789/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com