LinkBut​​ton命令事件处理程序args始终为字符串

时间:2009-04-09 19:22:05

标签: asp.net

我在这样的用户控件中有一个LinkBut​​ton控件(Accordion来自AJAX Control Toolkit):

<cc1:Accordion runat="server">
    <Panes></Panes>
    <HeaderTemplate></HeaderTemplate>
    <ContentTemplate>
        <asp:TextBox Text='<%# Bind("Title") %>' runat="server"></asp:TextBox>
        <asp:LinkButton Text="Update" CommandArgument='<%# Container.DataItem %>' CommandName="ItemUpdate" OnCommand="LinkButton_Command" runat="server"></asp:LinkButton>
    </ContentTemplate>
</cc1:Accordion>

手风琴在Page_Load:

中绑定
protected void Page_Load(object sender, EventArgs e)
{
    Accordion1.DataSource = GetACollection();
    Accordion1.DataBind();
}

但是在命令事件处理程序中,无论我做什么,参数总是字符串:

protected void LinkButton_Command(object sender, CommandEventArgs e)
{
      // sender is alway a string (the Text of the clicked button)
      // e is always a string property of the Container.DataItem object
}

字符串来自正确的对象(分别是按钮和绑定的DataItem),但我需要对象本身(特别是DataItem)。

发生了什么事?

1 个答案:

答案 0 :(得分:0)

这不是预期的行为..

http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.linkbutton.commandargument.aspx

  

属性值类型:System .. ::。String
  传递给
的可选参数   命令事件处理程序以及
  关联的CommandName属性。该
  默认值为String .. ::。Empty。