0

asp:xxx コントロールの一部のセル (行全体ではない) をシフトする方法を見つけようとしています。

以下は、データがどのようにレイアウトされ、その後に何を表示したいかを示すサンプル レイアウト (テキストを使用) です。これはすべて、2 行を表示または非表示にする条件が設定されるため、ページの読み込み時にコード ビハインドで実行できます。

基本的に、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>
4

1 に答える 1

2

1 つのオプションは、コード ビハインドで DataTable を作成し、それを 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);
}
于 2012-08-03T01:39:17.500 に答える