0

リストビューがあり、リストビューにデータがあるかどうかに関係なくヘッダー行を追加したいと考えています。ありとあらゆる条件で、私はそこにそれを望んでいます。LayOut Template を使用してそうしましたが、リストビューにデータがある場合にのみヘッダー行を表示しました。次に、EmptydataTemplate を試しました。ヘッダー行を表示していますが、ボタンが機能していません。私のコードは

<asp:UpdatePanel ID="upViewSchedule" runat="server">
        <ContentTemplate>
            <asp:ListView ID="lstuser" runat="server" ItemPlaceholderID="trItem" DataKeyNames="id"
                OnItemDataBound="lstuser_ItemDataBound">
                <LayoutTemplate>
                    <table cellspacing="0">
                        <tr class="hdrRowColor1">
                            <td align="left">
                                &nbsp;name
                            </td>
                            <td align="left">
                                salary
                            </td>
                            <td align="left">
                                address
                            </td>
                            <td align="left" style="border-right: 1px solid #6398cc">
                                Actions
                            </td>
                        </tr>
                        <tr class="OddRowColor">
                            <td align="left">
                                <asp:DropDownList ID="drphdrname" runat="server" Width="120px">
                                </asp:DropDownList>
                                <ajaxCtrl:CascadingDropDown ID="csddrphdrName" runat="server" TargetControlID="drpname"
                                    Category="Name" ServicePath="~/Resources/WebService.asmx" ServiceMethod="GetName">
                                </ajaxCtrl:CascadingDropDown>
                            </td>
                            <td>
                                <asp:TextBox ID="txtaddress" runat="server" Width="110px"></asp:TextBox>
                            </td>
                            <td width="50px" class="last">
                                <asp:ImageButton ID="imgBtnHdrAdd" runat="server" ImageUrl="~/App_Themes/ThemeNew/Images/add_new.png"
                                    OnClick="imgBtnHdrAdd_Click" ToolTip="Add user." />
                            </td>
                        </tr>
                        <tr id="trItem" runat="server">
                        </tr>
                    </table>
                </LayoutTemplate>
                <ItemTemplate>
                    <tr class='<%# Convert.ToBoolean(Container.DataItemIndex % 2) ? "OddRowColor" : "EvenRowColor" %>'>
                        <td align="left" width="138px">
                            <asp:DropDownList ID="drpname" runat="server" Width="120px">
                            </asp:DropDownList>
                            <asp:Label ID="lblCreatedBY" Text='<%# Eval("CreatedBy") %>' runat="server" Visible="false"></asp:Label>
                            <asp:Label ID="lblId" runat="server" Visible="false"></asp:Label>
                            <ajaxCtrl:CascadingDropDown ID="casddrpContacts" runat="server" TargetControlID="drpname"
                                Category="name" ServicePath="~/Resources/WebService.asmx" ServiceMethod="Getuser">
                            </ajaxCtrl:CascadingDropDown>
                        </td>
                        <td align="left" width="138px">
                            <asp:TextBox ID="TextBox1" runat="server" Text='<%# Eval("salary") %>' Width="110px"></asp:TextBox>
                        </td>
                        <td align="left" width="138px">
                            <asp:TextBox ID="TextBox2" runat="server" Text='<%# Eval("address") %>' Width="110px"></asp:TextBox>
                        </td>
                        <td align="left" class="last">
                            <asp:ImageButton ID="imgBtnEdit" runat="server" ImageUrl="~/App_Themes/ThemeNew2/images/update.png"
                                CommandArgument='<%# Eval("id") %>' OnClick="imgBtnEdit_Click" ToolTip="Update user" />
                            <asp:ImageButton ID="imgBtnDelete" runat="server" ImageUrl="~/App_Themes/ThemeNew/Images/delete.png"
                                CommandArgument='<%# Eval("id") %>' OnClientClick="return confirm('Are you sure you want to delete this user ?');"
                                ToolTip="Delete user" OnClick="imgBtnDelete_OnClick" />
                        </td>
                    </tr>
                </ItemTemplate>
                <EmptyDataTemplate>
                    <table cellspacing="0">
                        <tr class="hdrRowColor1">
                            <td align="left">
                                &nbsp;name
                            </td>
                            <td align="left">
                                salary
                            </td>
                            <td align="left">
                                address
                            </td>
                            <td align="left" style="border-right: 1px solid #6398cc">
                                Actions
                            </td>
                        </tr>
                        <tr class="OddRowColor">
                            <td align="left">
                                <asp:DropDownList ID="drphdrname" runat="server" Width="120px">
                                </asp:DropDownList>
                                <ajaxCtrl:CascadingDropDown ID="csddrphdrName" runat="server" TargetControlID="drpname"
                                    Category="Name" ServicePath="~/Resources/WebService.asmx" ServiceMethod="GetName">
                                </ajaxCtrl:CascadingDropDown>
                            </td>
                            <td>
                                <asp:TextBox ID="txtaddress" runat="server" Width="110px"></asp:TextBox>
                            </td>
                            <td width="50px" class="last">
                                <asp:ImageButton ID="imgBtnHdrAdd" runat="server" ImageUrl="~/App_Themes/ThemeNew/Images/add_new.png"
                                    OnClick="imgBtnHdrAdd_Click" ToolTip="Add user." />
                            </td>
                        </tr>
                        <tr id="trItem" runat="server">
                        </tr>
                    </table>
                </EmptyDataTemplate>
            </asp:ListView>
        </ContentTemplate>
    </asp:UpdatePanel>

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

 protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        BIndAddress();
        // BindRoleDrop();
        drpAddress.Items.Insert(0, new ListItem("Select Area", ""));
        drpRoom.Items.Insert(0, new ListItem("Select Room", ""));
        ViewState["sortCol"] = "tblUser.id";
        ViewState["sortDir"] = "Desc";
        ViewState["nmbr"] = 1;
        BindData(ViewState["sortCol"].ToString(), ViewState["sortDir"].ToString(), Convert.ToInt32(ViewState["nmbr"]), 7999);

    }
    else
    {
        lblMessage.Visible = false;

    }

}

もう 1 つ、これらに検証を適用する方法を教えてください。

4

1 に答える 1

0

ローカルでいくつかのテストを行いました。EmptyDataTemplate にボタンがある場合、イベントが発生する前に ListView の状態を変更しない限り、OnClick イベントが期待どおりに発生することがわかりました。

imgBtnHdrAdd_Clickしたがって、問題のボタンのイベントハンドラーの前に実行される ListView の状態を変更する (たとえば、再バインドする) コードがあると思います。

Page_Load メソッドが主な容疑者でしたが、コードに基づいて適切にチェックしてい!IsPostBackます。

BindDataListViewのデータバインディングを設定するために使用されるのは、への呼び出しであると想定しています。そのメソッドが呼び出されるコード ビハインドの他の場所を探し、ボタンのイベント ハンドラーの前にそれらの場所が実行されていないことを確認します。

于 2012-06-26T10:53:23.200 に答える