C# 将表(TD)中的数据和控件向上移动

C# 将表(TD)中的数据和控件向上移动,c#,asp.net,html,C#,Asp.net,Html,我试图找出如何将asp:xxx控件的某些单元格(而不是整行)向上移动 下面是一个示例布局(使用文本)来显示数据是如何布局的,以及我希望它之后显示什么。这一切都可以在页面加载的代码隐藏中完成,因为条件将设置为显示或隐藏这两行 基本上,我需要(有条件地)隐藏单元格XXX XXX YYY和YYY。然后把他们调高 <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title>&

我试图找出如何将asp:xxx控件的某些单元格(而不是整行)向上移动

下面是一个示例布局(使用文本)来显示数据是如何布局的,以及我希望它之后显示什么。这一切都可以在页面加载的代码隐藏中完成,因为条件将设置为显示或隐藏这两行

基本上,我需要(有条件地)隐藏单元格XXX XXX YYY和YYY。然后把他们调高

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
    <style type="text/css">
        .tableNoPad
        {
            padding: 0;
            margin: 0;
            border-style: none;
            width: 100%;
            border-collapse: collapse;
            empty-cells: hide;
        }
        .altrowStandard
        {
            background-color: lightblue;
        }
    </style>
</head>
<body>
    <form id="form1" runat="server">
    Before:
    <div>
        <table class="tableNoPad">
            <tr>
                <td>
                    AAA
                </td>
                <td>
                    aaa
                </td>
                <td>
                    &nbsp;
                </td>
                <td>
                    AAA
                </td>
                <td>
                    aaa
                </td>
            </tr>
            <tr class="altrowStandard">
                <td>
                    BBB
                </td>
                <td>
                    bbb
                </td>
                <td runat="server" id="hide1a">
                    &nbsp;
                </td>
                <td runat="server" id="hide1b">
                    BBB
                </td>
                <td runat="server" id="hide1c">
                    bbb
                </td>
            </tr>
            <tr>
                <td>
                    CCC
                </td>
                <td>
                    ccc
                </td>
                <td id="hide2a" runat="server">
                    &nbsp;
                </td>
                <td runat="server" id="hide2b">
                    XXX
                </td>
                <td runat="server" id="hide2c">
                    xxx
                </td>
            </tr>
            <tr class="altrowStandard">
                <td>
                    DDD
                </td>
                <td>
                    ddd
                </td>
                <td id="hide3a" runat="server">
                    &nbsp;
                </td>
                <td runat="server" id="hide3b">
                    YYY
                </td>
                <td runat="server" id="hide3c">
                    yyy
                </td>
            </tr>
            <tr>
                <td>
                </td>
                <td>
                </td>
                <td>
                    &nbsp;
                </td>
                <td>
                    CCC
                </td>
                <td>
                    ccc
                </td>
            </tr>
            <tr class="altrowStandard">
                <td>
                </td>
                <td>
                </td>
                <td>
                    &nbsp;
                </td>
                <td>
                    DDD
                </td>
                <td>
                    ddd
                </td>
            </tr>
        </table>
    </div>
    After:
    <div>
        <table class="tableNoPad">
            <tr>
                <td>
                    AAA
                </td>
                <td>
                    aaa
                </td>
                <td>
                    &nbsp;
                </td>
                <td>
                    AAA
                </td>
                <td>
                    aaa
                </td>
            </tr>
            <tr class="altrowStandard">
                <td>
                    BBB
                </td>
                <td>
                    bbb
                </td>
                <td runat="server" id="Td1">
                    &nbsp;
                </td>
                <td runat="server" id="Td2">
                    BBB
                </td>
                <td runat="server" id="Td3">
                    bbb
                </td>
            </tr>
            <tr>
                <td>
                    CCC
                </td>
                <td>
                    ccc
                </td>
                <td id="Td4" runat="server">
                    &nbsp;
                </td>
                <td runat="server" id="Td5">
                    CCC
                </td>
                <td runat="server" id="Td6">
                    ccc
                </td>
            </tr>
            <tr class="altrowStandard">
                <td>
                    DDD
                </td>
                <td>
                    ddd
                </td>
                <td id="Td7" runat="server">
                    &nbsp;
                </td>
                <td runat="server" id="Td8">
                    DDD
                </td>
                <td runat="server" id="Td9">
                    ddd
                </td>
            </tr>
        </table>
    </div>
    </form>
</body>
</html>


1.tableNoPad
{
填充:0;
保证金:0;
边框样式:无;
宽度:100%;
边界塌陷:塌陷;
空单元格:隐藏;
}
.altrowStandard
{
背景颜色:浅蓝色;
}
之前:
AAA
aaa
AAA
aaa
BBB
bbb
BBB
bbb
CCC
ccc
XXX
xxx
DDD
ddd
YYY
yyy
CCC
ccc
DDD
ddd
之后:
AAA
aaa
AAA
aaa
BBB
bbb
BBB
bbb
CCC
ccc
CCC
ccc
DDD
ddd
DDD
ddd

一个选项可能是在代码隐藏中构建一个数据表,然后将其绑定到GridView。将GridView添加到页面,如下所示:

<form id="form1" runat="server">
    <asp:GridView runat="server" ID="ExampleGridView" 
                AutoGenerateColumns="true" ShowHeader="false" />
</form>

然后,在页面加载中,您可以根据需要构建DataTable,例如:

protected void Page_Load(object sender, EventArgs e)
{
    DataTable table = new DataTable();
    var condition = false;

    for (int i = 0; i < 4; i++) table.Columns.Add();

    AddArray(table, new string[4] { "AAA", "aaa", "AAA", "aaa" });
    AddArray(table, new string[4] { "BBB", "bbb", "BBB", "bbb" });
    if (condition)
    {
        AddArray(table, new string[4] { "CCC", "ccc", "CCC", "ccc" });
        AddArray(table, new string[4] { "DDD", "ddd", "DDD", "ddd" });
    }
    else
    {
        AddArray(table, new string[4] { "CCC", "ccc", "XXX", "xxx" });
        AddArray(table, new string[4] { "DDD", "ddd", "YYY", "yyy" });
        AddArray(table, new string[4] { "", "", "CCC", "ccc" });
        AddArray(table, new string[4] { "", "", "DDD", "ddd" });
    }
    ExampleGridView.DataSource = table;
    ExampleGridView.DataBind();
}

private void AddArray(DataTable table, string[] items) {
    var row = table.NewRow();
    row.ItemArray = items;
    table.Rows.Add(row);
}
受保护的无效页面加载(对象发送方,事件参数e)
{
DataTable=新的DataTable();
var条件=假;
对于(inti=0;i<4;i++)table.Columns.Add();
AddArray(表,新字符串[4]{“AAA”、“AAA”、“AAA”、“AAA”});
AddArray(表,新字符串[4]{“BBB”、“BBB”、“BBB”、“BBB”});
如果(条件)
{
AddArray(表,新字符串[4]{“CCC”、“CCC”、“CCC”、“CCC”});
AddArray(表,新字符串[4]{“DDD”,“DDD”,“DDD”,“DDD”});
}
其他的
{
AddArray(表,新字符串[4]{“CCC”、“CCC”、“XXX”、“XXX”});
AddArray(表,新字符串[4]{“DDD”、“DDD”、“YYY”、“YYY”});
AddArray(表,新字符串[4]{“”,“CCC”,“CCC”});
AddArray(表,新字符串[4]{“”,“DDD”,“DDD”});
}
ExampleGridView.DataSource=表格;
例如GridView.DataBind();
}
私有void AddArray(数据表,字符串[]项){
var row=table.NewRow();
row.ItemArray=项目;
table.Rows.Add(行);
}

请注意,DDD下面有一些单元格,因此我需要能够只移动右侧的一些单元格。此外,我还考虑将其拆分为两个表(并隐藏行),但根据换行,交替的行不会正确对齐。