Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 中继器控件未使用ItemCommand更新_C#_Asp.net_Repeater - Fatal编程技术网

C# 中继器控件未使用ItemCommand更新

C# 中继器控件未使用ItemCommand更新,c#,asp.net,repeater,C#,Asp.net,Repeater,我有一个中继器控件,现在我只需在单击相关按钮时更改文本框中的文本即可。 然而,这并没有发生 以下是我目前的代码: <asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager> <asp:UpdatePanel ID="UpdatePanel1" runat="server"> <ContentTemplate>

我有一个
中继器
控件,现在我只需在单击相关按钮时更改文本框中的文本即可。
然而,这并没有发生

以下是我目前的代码:

<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; }
}
public分部类\u默认值:System.Web.UI.Page
{
受保护的无效页面加载(对象发送方、事件参数e)
{
GetFiles();
}
私有void GetFiles()
{
rptPdfList.DataSource=Pdf();
rptPdfList.DataBind();
}
受保护的void rptPdfList_ItemCommand(对象源,RepeaterCommandEventArgs e)
{
if(e.Item.ItemType!=ListItemType.Item&&e.Item.ItemType!=ListItemType.AlternatingItem)返回;
Label lblName=(Label)e.Item.FindControl(“lblName”);
开关(例如CommandName)
{
案例“LoadDoc”:
//Add(“src”,“PDF/”+lblName.Text);
lblTest.Text=“测试”;
lblName.Text=“oops”;
打破
}
}
公共静态列表Pdf()
{
字符串pdfDir=HostingEnvironment.MapPath(“~”+@“PDF\”;
DirectoryInfo目录=新的DirectoryInfo(pdfDir);
FileInfo[]pdfFiles=directory.GetFiles(“*.pdf”,SearchOption.AllDirectories);
列出pdfLists=pdfFiles。选择(pdfFile=>newpdflist
{
FileName=pdfFile.Name
}).ToList();
返回pdfLists;
}
}
公共类PdfList
{
公共字符串文件名{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()
,因此它总是返回到初始状态。

请显示您的绑定代码。绑定中继器在哪里?哇。。。我现在对我的编程感到不安全^^哈哈,谢谢你的指点