在aspx pageLoad事件之后触发Web用户控件事件

时间:2014-07-08 13:32:57

标签: ascx webusercontrol

我有一个aspx页面和一个Web用户控件,如下所示:

<div id="mdlProduto" class="modal fade" tabindex="-1">
<div class="modal-dialog modal-lg">
    <asp:UpdatePanel runat="server" ID="updProduto" UpdateMode="Conditional">
        <ContentTemplate>
            <div class="modal-content">
                <div class="modal-header">
                    <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
                    <h3>Adicionar/Editar Produto</h3>
                </div>

                <div class="modal-body">
                    <div id="filtros">
                        <div class="form-group">
                            <div class="row">
                                <div class="col-lg-3">
                                    <label>Código:</label>
                                    <input id="txtProdutoCodigo" runat="server" class="form-control"
                                        placeholder="Filtre por Código" title="Insira o código do produto" onkeypress="return SomenteNumero(event);" tabindex="6" maxlength="5" />
                                </div>
                                <div class="col-lg-5">
                                    <label>Descrição:</label>
                                    <input id="txtProdutoDescricao" runat="server" class="form-control"
                                        placeholder="Filtre pela Descrição" title="Insira o nome do produto" tabindex="6" />
                                </div>
                                <br />
                                <div class="col-lg-4">
                                    <asp:LinkButton
                                        ID="btnPesquisarProduto"
                                        runat="server"
                                        CssClass="btn btn-info"
                                        ToolTip="Você pode pesquisar, clicando aqui!"
                                        OnClick="btnPesquisarProduto_Click"
                                        Text="<span class='glyphicon glyphicon-search'></span> Pesquisar"
                                        TabIndex="10">
                                    </asp:LinkButton>
                                </div>
                            </div>
                        </div>
                    </div>
                    <div id="grid">
                        <div class="form-group">
                            <div class="row">
                                <div class="col-lg-12">
                                    <asp:GridView
                                        ID="gvProduto"
                                        runat="Server"
                                        AllowPaging="true"
                                        AllowSorting="true"
                                        CssClass="table table-bordered table-hover table-condensed table-responsive"
                                        CellSpacing="-1"
                                        GridLines="None"
                                        PageSize="5"
                                        AutoGenerateColumns="false"
                                        EnableViewState="True"
                                        OnRowCommand="gvProduto_RowCommand">
                                        <Columns>
                                            <asp:TemplateField ItemStyle-Width="15px">
                                                <ItemTemplate>
                                                    <asp:LinkButton ID="lnkSelecionar" runat="server" CssClass="glyphicon glyphicon-eye-open" CommandName="Selecionar" CommandArgument='<%# Container.DataItemIndex.ToString() + "," + Eval("prodID")%>' />
                                                </ItemTemplate>
                                            </asp:TemplateField>
                                            <asp:BoundField DataField="prodID" HeaderText="Código" ItemStyle-Width="15px" />
                                            <asp:BoundField DataField="prodDescricao" HeaderText="Descrição" />
                                            <asp:BoundField DataField="prodcatDescricao" HeaderText="Categoria" ItemStyle-Width="180px" />
                                            <asp:BoundField DataField="prodmarDescricao" HeaderText="Marca" ItemStyle-Width="180px" />
                                            <asp:BoundField DataField="prodValorVenda" HeaderText="Valor Venda" ItemStyle-Width="100px" />
                                            <asp:BoundField DataField="prodSaldo" HeaderText="Saldo" ItemStyle-Width="80px" />
                                        </Columns>
                                    </asp:GridView>
                                </div>
                            </div>
                        </div>
                    </div>
                    <div id="demaisInformacoes" runat="server">
                        <div class="form-group">
                            <div class="row">
                                <div class="col-lg-3">
                                    <label>Valor de Venda:</label>
                                    <input id="txtValorVenda" runat="server" class="form-control currency"
                                        placeholder="Valor Final de Venda" title="Insira o valor final de venda do produto" tabindex="6" />
                                </div>
                                <div class="col-md-2">
                                    <label>Quantidade:</label>
                                    <input id="txtQtdProduto" runat="server" class="form-control"
                                        placeholder="Quantidade do Produto" title="Insira a quantidade do produto" onkeypress="return SomenteNumero(event);" tabindex="6" maxlength="5" />
                                </div>
                            </div>
                        </div>
                        <div class="form-group">
                            <div class="row">
                                <div class="col-lg-12">
                                    <label>Observações:</label>
                                    <textarea id="txtObservacoes" runat="server" class="span6 form-control" rows="3" placeholder="Observações do Item"></textarea>
                                </div>
                            </div>
                        </div>
                    </div>
                </div>

                <div class="modal-footer">
                    <asp:Button ID="btnAtualizar" runat="server" ClientIDMode="Static" CssClass="btn btn-primary" Text="Atualizar"
                        ToolTip="Para adicionar/editar um produto, clique aqui!" UseSubmitBehavior="true"
                        OnClick="btnAtualizar_Click" TabIndex="16" />
                    <button type="button" data-dismiss="modal" class="btn" title="Clique aqui para fechar esta aba!" tabindex="17">Fechar</button>
                </div>
            </div>
            <input type="hidden" runat="server" id="hdfCodigoProdutoSelecionado" />
        </ContentTemplate>
        <Triggers>
            <asp:AsyncPostBackTrigger ControlID="gvProduto" />
        </Triggers>
    </asp:UpdatePanel>
</div>

我的问题是:当我点击btnAtualizar按钮时,它首先触发aspx的PageLoad事件,然后触发webusercontrol.cs上的click事件。我需要做的是逆转这一点。首先是WebUserControl事件,然后是aspx的PageLoad。那可能吗?

我已经尝试了一些但仍然无法正常工作。感谢您的帮助

1 个答案:

答案 0 :(得分:0)

我找到了解决这种情况的方法,修改是:

  • 我在WebUserControl上创建了一个EventHandler:

    公共事件EventHandler btnAtualizar;

    protected void btnAtualizar_Click(object sender, EventArgs e)
    {
        if (this.btnAtualizar != null)
        {
            DataRow dr = (Session["ProdutoPesquisado"] as DataTable).Select("prodID=" + hdfCodigoProdutoSelecionado.Value.ToInt()).FirstOrDefault();
            Session["ProdutoSelecionado"] = new ItensOrcamento { Produto = new Produto 
                                                                 {
                                                                     Id = hdfCodigoProdutoSelecionado.Value.ToInt(),
                                                                     Descricao = dr["prodDescricao"].ToString(),
                                                                     Categoria = new Categoria { Descricao = dr["prodcatDescricao"].ToString() },
                                                                     Marca = new Marca { Descricao = dr["prodmarDescricao"].ToString() }
                                                                 }, 
                                                                 Valor = txtValorVenda.Value.ToDecimal(), 
                                                                 Quantidade = txtQtdProduto.Value.ToInt(), 
                                                                 Observacao = txtObservacoes.Value };
            this.btnAtualizar(this, new EventArgs());
        }
    }
    
  • 这在ASPX页面上:

    protected void Page_Init(object sender, EventArgs e) { wucProduto.btnAtualizar += new EventHandler(wucProduto_btnAtualizar); }

    private void wucProduto_btnAtualizar(object sender, EventArgs e)
    {
        (Session["ProdutosOrcamento"] as List<ItensOrcamento>).Add(Session["ProdutoSelecionado"] as ItensOrcamento);
        CarregarProdutos();
    }
    

我希望这有助于某人。