在aspx中的asp.net文本框中分配变量值



我正在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;
}

最新更新