在 page_init 或 page_load 时触发转发器控件的哪个事件?

发布于 2024-12-06 16:57:16 字数 1043 浏览 7 评论 0原文

我有一个像 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 内的按钮,该代码就会起作用。

我想知道在 Page_LoadPage_Init 时触发 Repeater control 的哪个事件。

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

顺便说一句,我的项目是使用 C# ASP.NET 4 编写的。

I have a scenario like facebook wall where I need to display image of user in repeater control who posted.

I have tried myrepeater_ItemCommand1 or myrepeater_ItemDataBound but not working.

Code behind

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

and same in myrepeater_ItemCommand1 which is working if I click button inside Repeater.

I wanted to know that which event of Repeater control fires at the time of Page_Load or Page_Init.

Or, kindly suggest me other way to accomplish my task.

BTW, my project is in C# ASP.NET 4.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

善良天后 2024-12-13 16:57:16

保存帖子后,您应该重新绑定中继器。重新绑定中继器后,应该会显示您的更新。

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

After the post has been saved, you should rebind the repeater. After rebinding the repeater, your updates should display.

//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>

And in the code behind:

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

After an update:

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();
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文