簡體   English   中英

中繼器控件未使用ItemCommand更新

[英]Repeater control not updating with ItemCommand

我有一個Repeater控件,現在減少到單擊相關按鈕時只更改文本框中的文本。
但是,這沒有發生。

到目前為止,這是我的代碼:

<asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>
        <asp:UpdatePanel ID="UpdatePanel1" runat="server">
            <ContentTemplate>
                <div>
                    <asp:Repeater ID="rptPdfList" runat="server" OnItemCommand="rptPdfList_ItemCommand">
                        <HeaderTemplate>
                            <table>
                                <tr>
                                    <td>File Name</td>
                                    <td></td>
                                </tr>
                        </HeaderTemplate>
                        <ItemTemplate>
                            <tr>
                                <td>
                                    <asp:Label ID="lblName" runat="server" Text=<%#Eval("FileName") %>></asp:Label>
                                </td>
                                <td>
                                    <asp:Button ID="btnLoad" runat="server" Text="Load" CommandName="LoadDoc"/>
                                </td>
                            </tr>
                        </ItemTemplate>
                        <FooterTemplate>
                            </table>
                        </FooterTemplate>
                    </asp:Repeater>
                    <br />
                    <asp:Button ID="btnLoad" runat="server" Text="Load" OnClick="btnLoad_Click" /><br />
                    <iframe runat="server" id="pdfHolder"></iframe>
                    <br />
                    <asp:Label ID="lblTest" runat="server" Text="Label"></asp:Label>
                </div>
            </ContentTemplate>
        </asp:UpdatePanel>

背后的代碼:

public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        GetFiles();
    }

    private void GetFiles()
    {
        rptPdfList.DataSource = Pdf();
        rptPdfList.DataBind();
    }

    protected void rptPdfList_ItemCommand(object source, RepeaterCommandEventArgs e)
    {
        if (e.Item.ItemType != ListItemType.Item && e.Item.ItemType != ListItemType.AlternatingItem) return;

        Label lblName = (Label)e.Item.FindControl("lblName");

        switch (e.CommandName)
        {
            case "LoadDoc":
                //xpdfHolder.Attributes.Add("src", "PDF/" + lblName.Text);
                lblTest.Text = "test";
                lblName.Text = "oops";
                break;
        }
    }

    public static List<PdfList> Pdf()
    {
        string pdfDir = HostingEnvironment.MapPath("~") + @"PDF\";

        DirectoryInfo directory = new DirectoryInfo(pdfDir);
        FileInfo[] pdfFiles = directory.GetFiles("*.pdf", SearchOption.AllDirectories);

        List<PdfList> pdfLists = pdfFiles.Select(pdfFile => new PdfList
            {
                FileName = pdfFile.Name
            }).ToList();

        return pdfLists;
    }


}
public class PdfList
{
    public string FileName { get; set; }
}

有人看到我錯了嗎?

編輯,添加所有代碼

我這樣綁定您的中繼器,對我來說效果很好,只需將綁定功能放在

 if (!Page.IsPostBack) 

條件:

 protected void Page_Load(object sender, EventArgs e)
{
    if (!Page.IsPostBack)
    {
        using (DataClassesDataContext dc = new DataClassesDataContext())
        {
            var v = (from s in dc.t_employees select s).ToList();
            rptPdfList.DataSource = v;
            rptPdfList.DataBind();
        }
    }
}


protected void rptPdfList_ItemCommand(object source, RepeaterCommandEventArgs e)
{
    if (e.Item.ItemType != ListItemType.Item && e.Item.ItemType != ListItemType.AlternatingItem) return;

    Label lblName = (Label)e.Item.FindControl("lblName");

    switch (e.CommandName)
    {
        case "LoadDoc":
            //xpdfHolder.Attributes.Add("src", "PDF/" + lblName.Text);
            lblTest.Text = "test";
            lblName.Text = "oops";
            break;
    }
}

更改此:

protected void Page_Load(object sender, EventArgs e)
    {
        GetFiles();
    }

對此:

protected void Page_Load(object sender, EventArgs e)
    {
if (!IsPostBack)
        GetFiles();
    }

您每次都調用GetFiles()因此它總是返回到初始狀態。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM