0

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; }
}

誰かが私がどこで間違ったかを見ることができますか?

編集、すべてのコードを追加

4

2 に答える 2

0

これを変える:

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

これに:

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

毎回呼び出してGetFiles()いるので、常に初期状態に戻ります。

于 2012-11-16T10:13:34.203 に答える
0

私はあなたのリピーターをこのようにバインドしています、そしてそれは私にとってはうまくいきます、あなたのバインド関数をに置くだけです

 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;
    }
}
于 2012-11-16T10:10:19.410 に答える