0

我有一个列表视图,我想在其中添加一个标题行,当列表视图有数据时会出现。在每一种情况下,我都希望它在那里。我已经使用 LayOut 模板来执行此操作,但仅当列表视图有数据时才显示标题行。然后我尝试了 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;

    }

}

还有一件事,请让我知道如何对这些应用验证。

4

1 回答 1

0

我在本地做了一些测试。我发现如果我在 EmptyDataTemplate 中有一个按钮,只要您在事件触发之前不修改 ListView 的状态,它的 OnClick 事件就会按预期触发。

因此,我猜测您有一些代码可以修改在imgBtnHdrAdd_Click相关按钮的事件处理程序之前运行的 ListView 的状态(例如重新绑定它)。

Page_Load 方法可能是主要嫌疑人,但根据您的代码,它正在正确检查!IsPostBack.

我假设它是BindData用于设置数据绑定 ListView 的调用。在代码中查找调用该方法的其他位置,并验证在按钮的事件处理程序之前没有运行这些位置。

于 2012-06-26T10:53:23.200 回答