[asp.net]将值传递给 onclick linkButton 背后的代码

标签: Asp.net HTML C#
发布时间: 2017/3/26 4:07:34
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我有一个表所显示的行大小的 arraylist。我有一个链接按钮,显示的 id。但我不能去接在后面的 id 代码。我已经尝试使用 commandArgument,但我不能够获取的值。

<table style="width: 100%; border: 1px solid black;border-  
 collapse:collapse;">
    <thead class="auto-style1">
        <tr>
        <th class="auto-style1">Navigate</th>
        <th class="auto-style1">Description</th>
        <th>Price</th>
        </tr>
    </thead>
   <%ArrayList myList = new ArrayList();
     ArrayList price = new ArrayList();
     ArrayList id = new ArrayList();
        myList= (ArrayList)Session["description"];
        price = (ArrayList)Session["price"];
        id = (ArrayList)Session["id"];
        if (Session["description"]!=null)
        {
            for (int i = 0; i < myList.Count; i++)
            {
                LinkButton1.Text = Convert.ToString(id[i]);%>// Here i have set the value of the text. But in the code i am not able to fetch the id which is clicked.

    <tr>
        <td class="auto-style1">
        <asp:LinkButton ID="LinkButton1" runat="server" onclick ="LinkButton1_Click"></asp:LinkButton></td>
        <td class="auto-style1"><%=myList[i]%></td>
        <td class="auto-style1"><%=price[i]%></td>
    <% }
        }%>
    </tr>
</table>

我需要的 id 被显示为链接按钮 onclick 的那个特定的链接按钮的文本

解决方法 1:

你说你设置 CommandArgument,但它不工作。这通常是方式多哥。

 <asp:LinkButton ID="LinkButton1" runat="server" CommandArgument="<% id[i] %>" onclick ="LinkButton1_Click"></asp:LinkButton>

什么我的怀疑,那就是走错了是你自己 (这我很少看到) 和它申请一个循环呈现 LinkButton1 每一次,但是,将结果在多个控件与同一客户机 Id,因为那里是没什么区别于其他 LinkButton1 LinkButton1 的控件树中。

我推荐一个中继器循环 + 具有约束力。这是如果你开始使用对象而不多个会话变量的要容易得多。你的方法将受益于太使用对象。使用"导航"的对象与属性 Id、 价格和描述。

<asp:Repeater ID="someRepeater" runat="server">
     <HeaderTemplate>
         <table style="width: 100%; border: 1px solid black;border-collapse:collapse;">
             <thead class="auto-style1">
                 <tr>
                     <th class="auto-style1">Navigate</th>
                     <th class="auto-style1">Description</th>
                     <th>Price</th>
                 </tr>
             </thead>
     </HeaderTemplate>
     <ItemTemplate>
         <tr>
             <td class="auto-style1">
                 <asp:LinkButton ID="LinkButton1" runat="server" onclick ="LinkButton1_Click" CommandArgument="<%# ((Navigation)Container.DataItem).Id %>" Text="<%# ((Navigation)Container.DataItem).Id %>"></asp:LinkButton></td>
             <td class="auto-style1"><%# ((Navigation)Container.DataItem).Description %></td>
             <td class="auto-style1"><%# ((Navigation)Container.DataItem).Price %></td>
         </tr>
     </ItemTemplate>
     <FooterTemplate>
         </table>
     </FooterTemplate>
  </asp:Repeater>

在你后面的代码中构建或采取列表导航从会话,并将其绑定到直放站︰

    someRepeater.DataSource = navigations ?? new List<Navigation>();
    someRepeater.DataBind();

现在每个 LinkButton1 (或任何 WebControl) 可以被识别,因为它是在一个不同的直放站项目,所以还可以在客户机 Id,因此独特 ClientID 集成行 id。

直放站的方法你能无论使用任何 HTML 功能的列表。直放站是那样的循环在 ASP.Net 中,所以 ASP.Net 可以处理一切。

官方微信
官方QQ群
31647020