我正在做填字游戏,我在这样的面板中有100个文本框:
每个文本框的ID都是00 - 99,因为它有100个。
第一行的ID为00-09
,第二行的ID为10-19
,依此类推。
当用户在某个文本框中输入内容时,null
将会显示一些文本框。如何将值从某个id的文本框保存到数据库?例如,上面的图片HELP
,22
的文本框ID将具有值H
,23
的ID将具有值E
,id 24
的值为L
,25
的ID值为P
。
我不想保存文本框的null
值,我想保存不是null
的文本框的值。我还需要考虑他们的文本框ID,这样当我填充它们时,我只需要通过ID插入它们。
我是C#的新手,感谢您提供任何帮助/建议/解决方案。
这是我的代码:
protected void Page_Load(object sender, EventArgs e)
{
//hw.Write("<table>");
for (int i = 0; i <= 9; i++)
{
//hw.Write("<tr>");
for (int j = 0; j <= 9; j++)
{
TextBox tb = new TextBox();
tb.MaxLength = (1);
tb.Width = Unit.Pixel(40);
tb.Height = Unit.Pixel(40);
tb.ID = i.ToString() + j.ToString(); // giving each textbox a different id 00-99
Panel1.Controls.Add(tb);
}
Literal lc = new Literal();
lc.Text = "<br />";
Panel1.Controls.Add(lc);
}
}
protected void btnShow_Click(object sender, EventArgs e)
{
foreach (Control control in Panel1.Controls)
{
var textBox = control as TextBox;
if (textBox != null)
{
if (string.IsNullOrEmpty(textBox.Text))
{
textBox.Style["visibility"] = "hidden";
}
// textBox.Enabled = false;
textBox.Text = "";
}
}
}
答案 0 :(得分:2)
执行此操作的正确方法是将这些文本框包装在Repeater或Datalist控件中。您可以从here准备好这些控件。这样,当行数增加时,您不必更改为循环或硬编码值。
至于存储给定Id的值的问题,您可以在数据库中定义行#和col#,并在#行和col#上排序,这应该可行。
答案 1 :(得分:1)
最简单的方法是制作TextBox的2D数组(或List
)。在您创建TextBoxes的位置:
List<List<TextBox>> textBoxList = new List<List<TextBox>>();
for (int i = 0; i <= 9; i++)
{
List<TextBox> textBoxRow = new List<TextBox>(); //this could be columns, not sure
for (int j = 0; j <= 9; j++)
{
TextBox tb = new TextBox();
....
textBoxRow.Add(tb);
}
...
textBoxList.Add(textBoxRow);
}
现在您可以读取/写入这些数组条目,例如:
string readValue = textBoxList[2][5].Text;
textBoxList[1][7].Text = "asdf";