我在我的aspx文件中动态添加这样的文本框:
这是我的代码:
foreach (DataRow info in myDataTable.Rows)
{
//draw html table and add controls
<input type="text" name="myTxt" id="myTxt" runat="server" />
<tr><td><%=Convert.ToString(info[0][1]) %></td></tr>
//more code here
}
如何将特定单元格值分配给文本框?
我尝试使用&lt;%= Eval(info [0] [1])%&gt;但它没有按预期工作
对此的一些指导将不胜感激。 提前谢谢。
更新了问题:
<table>
<thead>
<tr>
<th>Col1</th>
<th>Col2</th>
<th>Col3</th>
</tr>
</thead>
<tbody>
<%
var rowId = 0;
foreach (System.Data.DataRow info in MyTable.Rows)
{
%> <tr>
<td> //want to draw a textbox which show value of column
<td><%=Convert.ToString(info[0]) %></td>
<td><%=Convert.ToString(info[3]) %></td>
}
%>
</tbody>
</table>
答案 0 :(得分:0)
如果要访问行值并分配它:
myTxt.Value = info["column"].ToString();
或按列索引:
myTxt.Value = info[index].ToString();
答案 1 :(得分:0)
正如您所提到的,存在一些约束,您必须仅在aspx
中执行此操作。记住这一点,您可以使用以下代码。并在此处记下多个输入将具有id = myTxt
,您需要处理此问题。其他好方法是遵循Repeater
并使用数据绑定。
<table>
<%
int counter = 0;
foreach (System.Data.DataRow info in myDataTable.Rows)
{
string txtid = "myTxt" + counter.ToString();
%>
<tr>
<td>
<input type="text" name='myTxt<%=txtid %>' id='myTxt<%=txtid %>' value="<%=Convert.ToString(info[0]) %>" /></td>
<td><%=Convert.ToString(info[0]) %></td>
</tr>
<%
counter = counter + 1;
}%>
</table>
要在PostBack
上检索已更改的文本框值,请使用此Request.Form["myTxtmyTxt0"]
,Request.Form["myTxtmyTxt1"]
等。
答案 2 :(得分:-1)
你这样做是错误的。您需要实例化TextBox
控件类,然后附加它的属性和值。最后,将新创建的控件添加到webform的控件集合中,如下所示。这可能无法保证将添加控件的任何特定位置。要确保具体位置,您需要使用place holder
控件,然后将文本框控件添加到place holder
。
foreach (DataRow info in myDataTable.Rows)
{
TextBox tbx = new TextBox();
tbx.Name = "some_name";
tbx.Text = info[idx].Tostring();
this.webform1.Controls.Add(tbx);
}
使用Place Holder
控制
为ASPX设计添加占位符控件
<asp:PlaceHolder id="PlaceHolder1" runat="server"/>
然后在.cs
文件后面的代码中添加新创建的TextBox控件以放置持有者控件集合
PlaceHolder1.Controls.Add(tbx);
(OR)
如果您已经在设计中声明了一个名为myTxt
的文本框,那么您可以附加值
foreach (DataRow info in myDataTable.Rows)
{
this.myTxt.Text = info[0] as string;
}