0

「レコードの追加」ボタンのあるListView内部があります。AccordionPane[レコードの追加] ボタンをクリックしても、 が表示されInsertItemTemplateません。奇妙なことに、もう一度ボタンをクリックすると表示されます。CommandName="InitInsert"ボタンに追加したりCommandName="Insert"、ボタンの内側にある を取り出したり、「挿入」ボタンを から取り出したり、ListViewから取り出したりするなど、多くのことを試しましたが、すべて役に立ちませんでした。私が行方不明であることは明らかですか?私は何を間違っていますか?AccordionListViewAccordion

<asp:ListView runat="server" ID="List1"  
    OnItemDataBound="List1_ItemDataBound"
    OnItemCommand="List1_ItemCommand"
    OnItemEditing="List1_ItemEditing"
    OnItemUpdating="List1_ItemUpdating"
    OnItemCanceling="List1_ItemCancelling"
    OnItemDeleting="List1_ItemDeleting"
    OnItemInserting="List1_ItemInserting"
    OnSorting="List1_Sorting">
<LayoutTemplate>
    <table border="0" cellpadding="1" cellspacing="0">
    <thead>
    <tr>
        <th><asp:LinkButton runat="server" ID="BtnCmpnyId" CommandName="Sort" CommandArgument="CmpnyId" Text="Company Code" /></th>
        ... more columns ...
    </tr>
    </thead>

    <tbody>
        <tr runat="server" id="itemPlaceholder"></tr>
    </tbody>

    <tfoot>
        <tr><td colspan="7" style="text-align: center;">
            <asp:Button runat="server" ID="BtnAddRecord" Text="Add Record" OnClick="BtnAddRecord_Click" />
        </td></tr>
    </tfoot>
    </table>
</LayoutTemplate>

<InsertItemTemplate>
    <tr>
        <td>
            <asp:HiddenField runat="server" ID="HiddenID" Value="-1" />
            <asp:TextBox runat="server" ID="TextCmpnyId" Text='<%# Eval("CmpnyId") %>' MaxLength="6" Width="50" />
        </td>

        ... more fields ...
    </tr>
</InsertItemTemplate>

... other templates ...
</asp:ListView>

私のコードビハインドでは:

protected void BtnAddRecord_Click(object sender, EventArgs e)
{
    List1.EditIndex = -1;
    List1.InsertItemPosition = InsertItemPosition.LastItem;
    //Button button = (Button)List1.Controls[0].FindControl("BtnAddRecord");
    //button.Visible = false;
}

// ItemCommand() is an empty shell for now...
protected void List1_ItemCommand(object sender, ListViewCommandEventArgs e)
{
    switch (e.CommandName.ToLower())
    {
        case "sort":
            break;

        case "edit":
            break;

        case "insert":
            break;

        case "update":
            break;

        case "cancel":
            break;

        case "delete":
            break;
    }
4

1 に答える 1

1

テンプレートの構築プロセスはバインディングから駆動されるため、位置を変更するときは ListView を再バインドする必要があると思います。100%確かではありません...

于 2012-10-05T19:05:17.873 に答える