繁体   English   中英

当输入控件放置在asp GridView中时,页面加载不触发

[英]Page Load not firing when input control placed in an asp GridView

我有一个gridview,它在我的网站的索引页面上为用户显示产品信息。 我想扩展此范围,以允许用户在检查产品时勾选复选框。

但是,在将复选框列添加到我的gridview模板中之后,当我尝试多次搜索索引页的Page_Load事件停止触发时,这会导致问题,因为执行树下的某些事件需要初始化的对象在页面加载时。

问题似乎是,将任何asp输入控件放置在gridview内都以某种方式阻止了Page_Load在DataSources OnSelecting和OnSelected以及Grids OnRowDataBound事件之前触发,但我不知道为什么。

这是我的示例代码,在这里看不到我做错了什么。

Index.aspx.cs

private ProductSearch productSearch

protected void Page_Load(object sender, EventArgs e)
{
    productSearch = new ProductSearch(GetSearchParameters());
    productSearch.PageLoad()
}

protected void ProductsSelecting(object sender, ObjectDataSourceSelectingEventArgs e)
{
    e.InputParameters["searchParams"] = productSearch.GetSearchParams();
}

protected void ProductsSelected(object sender, ObjectDataSourceStatusEventArgs e)
{
    productSearch.SetExportToCsvButton();
}

protected void ProductsPageIndexChanging(object sender, GridViewPageEventArgs e)
{
    dgProducts.PageIndex = e.NewPageIndex;
}

protected void ProductsOnRowDataBound(object sender, GridViewRowEventArgs e)
{
    productSearch.ProductsRowDataBound(e.Row);
}

Index.aspx

<%@ Page Language="C#" MasterPageFile="~/Admin/AdminMaster.master" AutoEventWireup="true" CodeBehind="Index.aspx.cs" Inherits="Web.Admin.Index" %>
<asp:Content ContentPlaceHolderID="DataFrame" runat="server">
    <asp:GridView ID="dgProducts" runat="server" AllowPaging="True" AllowSorting="True" EnableViewState="False"
            AutoGenerateColumns="False" DataSourceID="dsProducts" PagerSettings-Position="TopAndBottom" DataKeyNames="ProductNo, KitID"
            OnPageIndexChanging="ProductsPageIndexChanging" OnRowDataBound="ProductsOnRowDataBound"
            EmptyDataText="There are no products matching your search." meta:resourcekey="dgProducts" onrowcreated="ProductsRowCreated">
        <HeaderStyle Font-Size="Small" />
        <Columns>
            <asp:TemplateField HeaderText="Reviewed">
                <ItemTemplate>                        
                    <asp:CheckBox runat="server" ID="chkReviewed" class="reviewedCheckbox" Checked="False" />                        
                </ItemTemplate>
            </asp:TemplateField>
        </Columns
    </asp:GridView>
    <asp:ObjectDataSource ID="dsProducts" runat="server" EnablePaging="True" SelectMethod="ProductAndKitSearchByParams"
            TypeName="ProductSearchController.ProductSearch" onselecting="ProductsSelecting" SortParameterName="SortParameter"
            SelectCountMethod="SelectVirtualCount" OnSelected="ProductsSelected">
        <SelectParameters>
            <asp:Parameter ConvertEmptyStringToNull="true" DefaultValue="" Name="searchParams" Type="Object" />
        </SelectParameters>
    </asp:ObjectDataSource>
</asp:Content>

检查您的母版页contentplaceholderid并在内容页中提供它,如下所示:

<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="Server"></asp:Content>

并检查您的内容页面代码背后的文件名应与页面指令中提及的相同。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM