在aspx中的asp.net文本框中分配变量值
本文关键字:分配 变量值 文本 net aspx 中的 asp | 更新日期: 2023-09-27 18:28:23
我正在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
}
如何将特定单元格值分配给文本框?
我尝试使用<%=Eval(info[0][1])%>,但未按预期工作
请提供一些指导。提前谢谢。
更新Q:
<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>
如果您想访问行值并分配它:
myTxt.Value = info["column"].ToString();
或按列索引:
myTxt.Value = info[index].ToString();
正如您所提到的,存在一些约束,您只能在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"]
等。
你做这件事的方式不对。您需要实例化TextBox
控件类,然后附加它的属性和值。最后,将新创建的控件添加到Web窗体的控件集合中,如下所示。这可能无法保证将添加控件的任何特定位置。为了保证特定位置,您需要使用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);
(或)
如果你已经在设计中声明了一个名为myTxt
的文本框,那么你可以附上的值
foreach (DataRow info in myDataTable.Rows)
{
this.myTxt.Text = info[0] as string;
}