是否可以将一个面板的内容复制到另一个面板

本文关键字:复制 另一个 一个 是否 | 更新日期: 2023-09-27 18:35:30

我有一个C# ASP .net的 Web 表单,其中一个面板包含许多控件,如表格列中的文本框和下拉列表。允许用户在这些控件中输入数据,当按下"复制"按钮时,应将此面板的所有内容复制到同一页面上具有完全相同的控件和列的另一个面板,其启用属性设置为 false

我只能选择像下面这样做

例如:-

Protected void Button_click ()
{
    Panel2.textbox1.Text = Panel1.textbox1.Text;
    Panel2.textbox2.Text = Panel1.textbox2.Text;
                   ...
                   ...
                   ...
    Panel2.textbox30.Text = Panel1.textbox30.Text;

这会导致很多代码行,我觉得这不是一个好方法。您能提出任何其他替代方案还是唯一的方法?

我的标记如下所示

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm5.aspx.cs" Inherits="AjaxToolkitTrial.WebForm5" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
    <style type="text/css">
        .auto-style1 {
            width: 100%;
        }
    </style>
</head>
<body>
    <form id="form1" runat="server">
    <div>
    
        <table class="auto-style1">
            <tr>
                <td>
                    <asp:Panel ID="Panel1" runat="server">
                        <table class="auto-style1">
                            <tr>
                                <td>
                                    <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
                                </td>
                            </tr>
                            <tr>
                                <td>
                                    <asp:DropDownList ID="DropDownList1" runat="server">
                                    </asp:DropDownList>
                                </td>
                            </tr>
                            <tr>
                                <td>
                                    <asp:TextBox ID="TextBox3" runat="server"></asp:TextBox>
                                </td>
                            </tr>
                            <tr>
                                <td>
                                    <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Copy" />
                                </td>
                            </tr>
                        </table>
                    </asp:Panel>
                </td>
                <td>
                    <asp:Panel ID="Panel2" runat="server">
                        <table class="auto-style1">
                            <tr>
                                <td>
                                    <asp:TextBox ID="TextBox4" runat="server"></asp:TextBox>
                                </td>
                            </tr>
                            <tr>
                                <td>
                                    <asp:DropDownList ID="DropDownList2" runat="server">
                                    </asp:DropDownList>
                                </td>
                            </tr>
                            <tr>
                                <td>
                                    <asp:TextBox ID="TextBox6" runat="server"></asp:TextBox>
                                </td>
                            </tr>
                            <tr>
                                <td>&nbsp;</td>
                            </tr>
                        </table>
                    </asp:Panel>
                </td>
            </tr>
        </table>
    
    </div>
    </form>
</body>
</html>

提前谢谢..

是否可以将一个面板的内容复制到另一个面板

你可以认为这是提示,但两个面板中的控件名称应该相同以识别它。 请参阅下面的伪代码,这可能会对您有所帮助

foreach(Control c in Panel1.Controls)
{
    var control = Panel2.Controls.AsEnumerable().Where(p => p.name = c.name).select();
    Textbox txt = control as TextBox;
    c.Text = txt.Text;
}
您应该

动态创建所有 panel2 控件。喜欢

    TextBox txt1 = new TextBox()
    TextBox txt2 = new TextBox()
    Panel2.Controls.Add(txt1);
    Panel2.Controls.Add(txt2);
    ...
    ...

这也不是好方法。因此,您应该创建一个循环并在循环中创建所有控件。

或者,您可以考虑使用用户控件。

在这种情况下,

我要做的是使用某种形式的模板化控件,如转发器,然后在按下复制按钮时,将数据作为数据源中的新行复制,然后将转发器重新绑定到新数据 - 然后,您将在转发器中的两行中拥有数据和控件的副本。