在page_init或page_load时,哪个转发器控制事件会触发?

时间:2011-09-28 13:43:31

标签: c# asp.net repeater asprepeater

我有一个像facebook墙的场景,我需要在转发器控件中显示发布的用户图像。

我尝试了myrepeater_ItemCommand1myrepeater_ItemDataBound但没有工作。

背后的代码

protected void myrepeater_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
    try
    {
        LinkButton lblPostedBy = (LinkButton)e.Item.FindControl("lblPostedBy");
        con.Open();
        cmd.CommandText = "select image from " + lblPostedBy.Text + " where id=1";
        cmd.Connection = con;
        string imageurl = (string)cmd.ExecuteScalar();
        con.Close();
        Image Image1 = (Image)e.Item.FindControl("Image1");
        Image1.ImageUrl = imageurl;
    }

    catch (Exception a)
    {
        lblMsg.Text = a.Message;
        msgbox.Visible = true;
    }
}

myrepeater_ItemCommand1中的相同,如果我点击Repeater内的按钮,它就会起作用。

我想知道Repeater controlPage_LoadPage_Init发生了什么事件。

或者,请建议我完成任务的其他方法。

顺便说一句,我的项目在C# ASP.NET 4

1 个答案:

答案 0 :(得分:1)

保存帖子后,您应该重新绑定转发器。重新绑定转发器后,应显示更新。

//update some stuff in the database

Repeater1.DataSource = RepeaterDataSource();
Repeater1.DataBind();

修改

<asp:Repeater ID="Repeater1" runat="server" ...>
    <ItemTemplate>
        <asp:Image ID="imgProfilePic" runat="server" ImageUrl='<%#Eval("ProfileImageUrl")%>' ... />
        <%#Eval("PostMessage")%>
    </ItemTemplate>
</asp:Repeater>

在后面的代码中:

protected void BindDataToRepeater()
{
    Repeater1.DataSource = GetUserPosts();
    Repeater1.DataBind();
}

更新后:

protected void Button1_Click(object sender, EventArgs e)
{
    //save post to database
    SavePost();

    //rebind the repeater to display the post that was just added
    BindDataToRepeater();
}