【问题标题】:How do I retrieve the control contents in a dynamic table?如何检索动态表中的控件内容?
【发布时间】:2010-08-25 19:52:09
【问题描述】:

我有一个页面,我想收集有关x 用户数量的信息。我有一个控件,您可以在其中输入用户数量,并根据该数字创建一个动态表,其中每个用户都有一行。每个表格行都有文本框控件,我想在回发时从中检索值。这如何实现?

【问题讨论】:

    标签: asp.net vb.net user-controls dynamic-tables


    【解决方案1】:

    您的目标是什么特定风格的 ASP.Net? ASP.Net MVC?网络表单?

    在 webforms(我更熟悉的方式)中执行此类操作的最快和最简单的方法是在页面上放置一个 GridView 控件,并将一个通用集合绑定到它,您可以根据在控件中输入的数字。

    这是一段 10m 的快速代码。在 Visual Studio 2010 中创建了一个默认的 WebForms Web 项目。

    网页来源:

    <%@ Page Title="Home Page" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true"
        CodeBehind="Default.aspx.cs" Inherits="WebApplication1._Default" %>
    
    <asp:Content ID="HeaderContent" runat="server" ContentPlaceHolderID="HeadContent">
    </asp:Content>
    <asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent">
    
        <p>
            <table>
                <tr>
                    <td>Rows:</td>
                    <td><asp:TextBox ID="TextBox1" runat="server" />
                        <asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="Button" />
                    </td>
                </tr>
                <tr>
                    <td colspan=2>
                    <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False">
                        <Columns>
                            <asp:TemplateField>
                                <ItemTemplate>
                                    <asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
                                </ItemTemplate>
                            </asp:TemplateField>
                        </Columns>
                    </asp:GridView>
                        <asp:Button ID="Button2" runat="server" onclick="Button2_Click" Text="Button" />
                    </td>
                </tr>
            </table>
    
    
        </p>
    
    </asp:Content>
    

    后面的代码:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    
    namespace WebApplication1
    {
        public partial class _Default : System.Web.UI.Page
        {
            protected void Page_Init(object sender, EventArgs e)
            {
    
            }
    
            protected void Button1_Click(object sender, EventArgs e)
            {
                List<string> users = new List<string>(Enumerable.Repeat(string.Empty, Int32.Parse(TextBox1.Text)));
                GridView1.DataSource = users;
                GridView1.DataBind();
            }
    
            protected void Button2_Click(object sender, EventArgs e)
            {
                var list = from GridViewRow row in GridView1.Rows
                           where row.RowType == DataControlRowType.DataRow
                           select (row.FindControl("TextBox2") as TextBox).Text;
                // now do something with this list of strings
            }
        }
    }
    

    【讨论】:

    • 我正在使用网络表单。您的示例看起来与我现在根据 Bill 使用网格视图的建议所写的内容很接近。
    【解决方案2】:

    您可能会发现创建一个 asp:GridView 会更容易。然后,您可以遍历回发时的行并检查控件。有很多示例代码。

    【讨论】:

    • 那是我的下一个进攻计划。凭借强大的 ASP 经典背景,我构建页面时假设引用动态创建的控件不会那么困难。
    猜你喜欢
    • 2013-04-17
    • 2012-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-09
    • 1970-01-01
    相关资源
    最近更新 更多