【问题标题】:LinkButton Click Event in Repeater Nested Datalist in asp.netasp.net中Repeater嵌套数据列表中的LinkBut​​ton单击事件
【发布时间】:2017-03-09 15:30:26
【问题描述】:

我在一个项目中有这样的设计。如何在 asp.net 的中继器嵌套数据列表中达到按钮单击事件?

<asp:DataList ID="dlPosts" runat="server" Width="100%" RepeatLayout="Flow" 
RepeatColumns="1" OnItemCommand="dlPosts_ItemCommand" 
OnItemDataBound="dlPosts_ItemDataBound">
 <ItemTemplate>
   <asp:Repeater ID="repImgs" runat="server">
    <ItemTemplate>
     <img src="<%#Eval("Picture") %>"  style="height: 35px; width: 35px" alt="" align="middle" valign="top" />
     <asp:LinkButton ID="lbYorum" runat="server" class="w3-btn w3-green w3-hover-orange" CommandName="MyUpdate" CommandArgument='<%#Bind("YazarID") %>'> Send</asp:LinkButton>
    </ItemTemplate>
   </asp:Repeater>
 </ItemTemplate>
</asp:DataList>

【问题讨论】:

    标签: asp.net repeater datalist linkbutton


    【解决方案1】:

    您可以像常规按钮控件一样将 OnCommand 事件附加到 LinkBut​​ton。

    <asp:LinkButton ID="lbYorum" runat="server" 
        class="w3-btn w3-green w3-hover-orange" 
        CommandName="MyUpdate" 
        CommandArgument='<%#Bind("YazarID") %>' 
        OnCommand="lbYorum_Command"> Send</asp:LinkButton>
    

    代码隐藏

    然后从e.CommandArgument检索YazarID

    protected void lbYorum_Command(object sender, CommandEventArgs e)
    {
        string commandName = e.CommandName;
        string yazarID = e.CommandArgument.ToString();
    }
    

    * 更新 *

    如果我在转发器中添加一个新的 TextBox,我如何获取它的值?

    您可以使用 Parent.FindControl 来查找同级控件。

    ...
    
    <ItemTemplate>
        <img src="<%#Eval("Picture") %>" style="height: 35px; width: 35px" alt="" align="middle" valign="top" />
        <asp:LinkButton ID="lbYorum" runat="server" 
            class="w3-btn w3-green w3-hover-orange" 
            CommandName="MyUpdate" 
            CommandArgument='<%#Bind("YazarID") %>' 
            OnCommand="lbYorum_Command"> Send</asp:LinkButton>
        <asp:TextBox ID="txtYorum" runat="server" Height="50" Width="500" TextMode="MultiLine"></asp:TextBox>
    </ItemTemplate>
    ...
    
    protected void lbYorum_Command(object sender, CommandEventArgs e)
    {
        string commandName = e.CommandName;
        string yazarID = e.CommandArgument.ToString();
    
        var control = sender as Control;
        var txtYorum = control.Parent.FindControl("txtYorum") as TextBox;
    }
    

    【讨论】:

    • 如果我在转发器中添加一个新的文本框,我怎样才能得到它的值?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多