在UpdatePanel内具有UserControl的转发器无法正常工作C#

时间:2017-04-26 16:20:49

标签: c# user-controls updatepanel

我遇到的问题可能是如此愚蠢,但我无法找到解决方案。我在Repeater中有一个UserControl,而UpdatePanel里面有一个Repeater。我需要做的是根据选择的日期显示一些图块(UserControls)。

当页面加载时,瓷砖正常填充,一切正常。但是当我更改日期时,也会显示切片,但信息不会填充在这些切片中。

下面你可以看到我的代码:

HTML代码

<div class="w3-container">
    <div class="w3-display-container w3-margin-top">
        <asp:UpdatePanel ID="upData" runat="server">
            <ContentTemplate>
                <asp:LinkButton ID="btnDecrescerData" CssClass="w3-display-left w3-text-teal" runat="server" OnClick="DecrescerData">
                    <i class="fa fa-chevron-left fa-4x" aria-hidden="true"></i>
                </asp:LinkButton>
                <span class="w3-display-middle w3-xlarge">
                    <b><asp:Label ID="lblDataCirurgia" runat="server"></asp:Label></b>
                    <span class="w3-text-teal"><i class="fa fa-calendar" aria-hidden="true"></i></span>
                </span>
                <asp:LinkButton ID="btnAcrescerData" CssClass="w3-display-right w3-text-teal" runat="server" OnClick="AcrescerData">
                    <i class="fa fa-chevron-right fa-4x" aria-hidden="true"></i>
                </asp:LinkButton>
            </ContentTemplate>
            <Triggers>
                <asp:AsyncPostBackTrigger ControlID="btnDecrescerData" EventName="Click" />
                <asp:AsyncPostBackTrigger ControlID="btnAcrescerData" EventName="Click" />
            </Triggers>
        </asp:UpdatePanel>
    </div>
</div>
<br />
<div class="w3-container w3-row">
    <asp:UpdatePanel ID="upCirurgias" runat="server">
        <ContentTemplate>
            <asp:Repeater ID="rptCirurgias" runat="server">
                <ItemTemplate>
                    <uc:Cirurgia ID="pnlCirurgia" runat="server" 
                        codCirurgia='<%# Eval("CODIGO_CIRURGIA") %>' 
                        dataCirurgia='<%# Eval("DATA_CIRURGIA") %>' 
                        dataAutorizacao='<%# Eval("DATA_AUTORIZACAO") %>' 
                        nomePaciente='<%# Eval("NOME_PACIENTE") %>' 
                        nomeConvenio='<%# Eval("NOME_CONVENIO") %>' 
                        nomeMedico='<%# Eval("NOME_MEDICO") %>' 
                        nomeInstrumentador='<%# Eval("NOME_INSTRUMENTADOR") %>' />
                </ItemTemplate>
            </asp:Repeater>
        </ContentTemplate>
    </asp:UpdatePanel>
</div>

背后的代码

public partial class BuscarCirurgias : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            lblDataCirurgia.Text = DateTime.Now.ToString("dd/MM/yyyy");
            BuscarCirurgiasDisponiveis();
        }
    }

    private void BuscarCirurgiasDisponiveis()
    {
        Usuario usuario = (Usuario)Session["USUARIO"];
        int dia, mes, ano = 0;

        dia = int.Parse(lblDataCirurgia.Text.Substring(0, 2));
        mes = int.Parse(lblDataCirurgia.Text.Substring(3, 2));
        ano = int.Parse(lblDataCirurgia.Text.Substring(6, 4));

        DateTime dataBusca = new DateTime(ano, mes, dia);

        DataTable dt = new DataTable();
        dt = new Controle.Controle().BuscarCirurgiasDisponiveis(usuario, dataBusca);

        rptCirurgias.DataSource = dt;
        rptCirurgias.DataBind();
    }

    protected void DecrescerData(object sender, EventArgs e)
    {
        int dia, mes, ano = 0;
        dia = int.Parse(lblDataCirurgia.Text.Substring(0, 2));
        mes = int.Parse(lblDataCirurgia.Text.Substring(3, 2));
        ano = int.Parse(lblDataCirurgia.Text.Substring(6, 4));

        DateTime dataBusca = new DateTime(ano, mes, dia, DateTime.Now.Hour, DateTime.Now.Minute, DateTime.Now.Second);
        dataBusca = dataBusca.AddDays(-1);

        lblDataCirurgia.Text = dataBusca.ToString("dd/MM/yyyy");

        BuscarCirurgiasDisponiveis();
    }

    protected void AcrescerData(object sender, EventArgs e)
    {
        int dia, mes, ano = 0;
        dia = int.Parse(lblDataCirurgia.Text.Substring(0, 2));
        mes = int.Parse(lblDataCirurgia.Text.Substring(3, 2));
        ano = int.Parse(lblDataCirurgia.Text.Substring(6, 4));

        DateTime dataBusca = new DateTime(ano, mes, dia);
        dataBusca = dataBusca.AddDays(1);

        lblDataCirurgia.Text = dataBusca.ToString("dd/MM/yyyy");

        BuscarCirurgiasDisponiveis();
    }
}

用户控制代码背后

public partial class Cirurgia : System.Web.UI.UserControl
{
    public string codCirurgia { get; set; }
    public DateTime dataCirurgia { get; set; }
    public DateTime dataAutorizacao { get; set; }
    public string nomePaciente { get; set; }
    public string nomeConvenio { get; set; }
    public string nomeMedico { get; set; }
    public string nomeInstrumentador { get; set; }

    protected void Page_Load(object sender, EventArgs e)
    {
        lblCodigoCirurgiaUC.Text = this.codCirurgia;
        lblDataCirurgiaUC.Text = this.dataCirurgia.ToString("dd/MM/yyyy");
        lblDataAutorizacaoUC.Text = this.dataAutorizacao.ToString("dd/MM/yyyy");
        lblNomePacienteUC.Text = this.nomePaciente;
        lblConvenioUC.Text = this.nomeConvenio;
        lblNomeMedicoUC.Text = this.nomeMedico;
        lblNomeInstrumentadorUC.Text = this.nomeInstrumentador;
    }
}

有人知道我能做什么吗?

提前致谢!

0 个答案:

没有答案