Какое событие управления повторителем срабатывает во время page_init или page_load? - PullRequest
0 голосов
/ 28 сентября 2011

У меня есть сценарий, такой как стена на фейсбуке, где мне нужно отобразить изображение пользователя в репитере, который отправил сообщение.

Я пробовал myrepeater_ItemCommand1 или myrepeater_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 control происходит во время Page_Load или Page_Init.

Или, пожалуйста, предложите мне другой способ выполнить мою задачу.

Кстати, мой проект в C# ASP.NET 4.

1 Ответ

1 голос
/ 28 сентября 2011

После того, как сообщение было сохранено, вы должны привязать ретранслятор. После повторного связывания повторителя ваши обновления должны отобразиться.

//update some stuff in the database

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

EDIT

<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();
}
...