单击子LinkBut​​ton控件时,在Datalist控件中访问具有多个记录的子标签控件值?

时间:2011-07-08 16:45:21

标签: c# asp.net

我有一个带有Datalist控件和FormView控件的aspx页面。 Datalist显示所有记录,并隐藏FormView。 FormView显示记录的详细信息,并隐藏Datalist控件。当我单击Datalist中的记录时,我转到Formview进行显示,编辑所选记录。

如何将记录ID传递给click事件以选择数据库中的记录并在Formview中显示详细信息?

有多个控件具有相同的客户端ID,运行时会在末尾附加一个数字,以使客户端ID唯一。

以下是我想从后面的代码访问的控件:

<asp:Label ID="lHideAndSeek" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "IdString") %>' CssClass="hideAndSeek">

以下是我用来选择公司详细信息的控件:

<asp:LinkButton ID="btnSelectCompany" runat="server" CausesValidation="false"
                    onclick="btnSelectCompany_Click"><%# DataBinder.Eval(Container.DataItem, "Name") %></asp:LinkButton>

这里是我想在单击linkbutton时访问标签控件并将值传递给SelectCompany()而不是硬编码4的代码:

protected void btnSelectCompany_Click(object sender, EventArgs e)
{
    DataList1.Visible = false;

    FormView1.ChangeMode(FormViewMode.ReadOnly);

    using (jpEntities myEntities = new jpEntities())
    {
        FormView1.DataSource = myEntities.SelectCompany(4);
        FormView1.DataBind();
    }

    FormView1.Visible = true;
}

谢谢你看这个!

1 个答案:

答案 0 :(得分:0)

您可以将CommandArgument属性添加到LinkBut​​ton并绑定它的数据,就像使用Text属性一样。然后,您可以从代码隐藏中提取该值。

像这样。

<asp:LinkButton ID="btnSelectCompany" runat="server" 
            CausesValidation="false" CommandArgument='<%# DataBinder.Eval(Container.DataItem, "Id") %>' OnClick="btnSelectCompany_Click"><%# DataBinder.Eval(Container.DataItem, "Name") %></asp:LinkButton>

LinkButton linkButton = sender as LinkButton;
int id = int.Parse(linkButton.CommandArgument);