代码之家  ›  专栏  ›  技术社区  ›  krishna

将foreach循环中的值分配给asp:button CommandArgument

  •  3
  • krishna  · 技术社区  · 16 年前

    代码隐藏文件创建了一个员工列表,asp.net页面在列表中循环。

      <%foreach(var employee in employeesList){%>
        <tr>
         <td><%=employee.firstName%></td>
         <td><%=employee.lastName%></td>
        /*How to access employee.Id in the commandArgument? */
        <td><asp:Button ID="btnDeleteEmployee" runat="server" CommandArgument=''    Text="Delete" OnCommand="btnDeleteEmployee_Click" /></td>
        </tr>
    <%}%>
    
    2 回复  |  直到 14 年前
        1
  •  6
  •   rick schott    16 年前

    <asp:Repeater runat="server" ID="rptOutter" 
        onitemdatabound="rptOutter_ItemDataBound" >
        <ItemTemplate>
            <tr>
                <td><%#Eval("firstName") %></td>
                <td><%#Eval("lastName") %></td>
                <td><asp:Button runat="server" ID="btnDeleteEmployee" CommandArgument='<%#Eval("Id") %>' Text="Delete" OnCommand="btnDeleteEmployee_Click"  /></td>
                <td>
                    <asp:Repeater runat="server" ID="rptInner" >
                        <ItemTemplate>
                            <table>                                
                                <tr>
                                    <td><%#Eval("firstNameInner") %></td>
                                    <td><%#Eval("lastNameInner") %></td>
                                </tr>
                            </table>
                        </ItemTemplate>
                    </asp:Repeater>
    
                </td>
            </tr>
        </ItemTemplate>
    </asp:Repeater>
    

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            rptOutter.DataSource = outterDataSource;
            rptOutter.DataBind();
        }
    
    }
    
    protected void rptOutter_ItemDataBound(object sender, RepeaterItemEventArgs e)
    {
        RepeaterItem item = e.Item;
        if ((item.ItemType == ListItemType.Item) ||
            (item.ItemType == ListItemType.AlternatingItem))
        {
            //get your datasource from parent repeater if needed
            //cast to your datasource type
            //DataSourceObject ds = (DataSourceObject)item.DataItem;
            Repeater r = e.Item.FindControl("rptInner") as Repeater;
            if (r != null)
            {
                r.DataSource = innerDataSource;
                r.DataBind();
            }
        }
    
    }
    
        2
  •  3
  •   Aaron    16 年前
    <asp:Repeater runat="server" ID="rptEmployeeList">
        <ItemTemplate>
            <tr>
                <td><%#Eval("firstName") %></td>
                <td><%#Eval("lastName") %></td>
                <td><asp:Button runat="server" ID="btnDeleteEmployee" CommandArgument='<%#Eval("Id") %>' Text="Delete" OnCommand="btnDeleteEmployee_Click"  /></td>
            </tr>
        </ItemTemplate>
    </asp:Repeater>
    

    if (!Page.IsPostBack)
    {
        rptEmployeeList.DataSource = employeeList;
        rptEmployeeList.DataBind();
    }
    
    推荐文章