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

时间:2014-10-30 13:51:20

标签: c# 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
}

如何将特定单元格值分配给文本框?

我尝试使用&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>

3 个答案:

答案 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;
}