【问题标题】:How do I pass a parameter in an asp onclick call in a table row?如何在表格行的 asp onclick 调用中传递参数?
【发布时间】:2014-10-07 02:55:17
【问题描述】:

这里我在列表视图中有一个表格行,声明如下:

<tr onclick="<%= _jsPostBackCall %>;" />

我在后端调用一个回发方法,但必须得到 tr 索引:

    public void RaisePostBackEvent(string eventArgument)
    {
        //selected index here
    }

aspx 页面内容 - 下面是 aspx 页面中的 html。这包含列表视图。

<asp:ListView ID="lvEquipmentList" runat="server" OnSelectedIndexChanged="lvEquipmentList_SelectedIndexChanged" OnSelectedIndexChanging="lvEquipmentList_SelectedIndexChanging">
            <LayoutTemplate>
                <table runat="server" class="TableCSS">
                    <tr runat="server" class="TableHeader">  
                        <td runat="server" style="width: 30%;">PRODUCT LINE</td>  
                        <td runat="server" style="width: 20%;">MODEL</td>
                        <td runat="server" style="width: 20%;">SERIAL #</td>
                        <td runat="server" style="width: 12%; text-align:center">DAR STATUS</td>
                        <td runat="server" style="width: 18%; text-align:right;">SHIP DATE</td>  
                    </tr>
                    <tr id="ItemPlaceholder" runat="server">
                    </tr>
                </table>
            </LayoutTemplate>
            <EmptyDataTemplate>
                <table id="Table1" runat="server" class="TableCSS">
                    <tr runat="server" class="TableHeader">  
                        <td id="Td1" runat="server" style="width: 30%;">PRODUCT LINE</td>  
                        <td id="Td2" runat="server" style="width: 20%;">MODEL</td>
                        <td id="Td3" runat="server" style="width: 20%;">SERIAL #</td>
                        <td id="Td4" runat="server" style="width: 12%; text-align:center;">DAR STATUS</td>
                        <td id="Td5" runat="server" style="width: 18%; text-align:right;">SHIP DATE</td>  
                    </tr>
                    <tr runat="server" class="TableData">
                        <td style="column-span:all;">
                            <asp:Label runat="server" Text="There are no reports to display."></asp:Label>
                        </td>
                    </tr>
                </table>
            </EmptyDataTemplate>
            <ItemTemplate>
                <tr style="border-bottom:1pt solid #E2E2E8;" onclick="<%= _jsPostBackCall %>;" onmouseover="this.style.background='#f6f6f6';" onmouseout="this.style.background='white'">
                    <td style="width: 30%; padding: 0px 15px 0px 15px;">
                        <table>
                            <tr class="NoBorder">
                                <td style="width: 20%;">
                                    <img src='<%#Eval("standard_image") %>' alt="" width="80" onerror="this.src='Content/Images/placeholder.png';"/>
                                </td>
                                <td>
                                    <asp:Label ID="lblProductLine" runat="server" Text='<%#Eval("product_line")%>'/>
                                </td>
                            </tr>
                        </table>
                    </td>
                    <td style="width: 24%; padding: 0px 15px 0px 15px;">
                        <asp:Label ID="lblModelNum" runat="server" Text='<%#Eval("model")%>'/>
                    </td>
                    <td style="width: 16%; padding: 0px 15px 0px 15px;">
                        <asp:Label ID="lblSerialNum" runat="server" Text='<%#Eval("serial_number")%>'/>
                    </td>
                    <td style="width: 12%; padding: 0px 15px 0px 15px; text-align:center;">
                            <asp:LinkButton runat="server" ID="SelectCategoryButton" CommandName="Select">
                                <img id="Img1" runat="server" src='<%#Eval("display_status") %>' alt="" width="20"/>
                            </asp:LinkButton>
                    </td>
                    <td style="width: 18%; padding: 0px 15px 0px 15px; text-align:right;">
                        <asp:Label ID="lblShipDate" runat="server" Text='<%#Eval("date")%>'/>
                    </td>
                </tr>
            </ItemTemplate>
        </asp:ListView>

【问题讨论】:

    标签: asp.net html html-table postback


    【解决方案1】:

    注册回发调用时 - 第二个参数将是参数:

    _jsPostBackCall = ClientScript.GetPostBackEventReference(this, "The Parameter");
    

    【讨论】:

    • 如何获取参数中选中的行索引?
    • 您可以在后端代码中构建表,然后在后端代码中将索引分配给回调函数。或者您可以在客户端 JavaScript 中循环遍历表行,相应地修改 onclick 函数
    • 对不起,你能发一个简单的例子吗?
    • @KateMak 您的 HTML 标记中是否已经有表格,或者您是否在代码中动态构建它?
    • 你还能发布表格在渲染页面中的外观(如果表格太长,则为片段)?你也愿意使用 jQuery 吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-11-24
    • 2019-09-07
    • 2023-04-08
    • 1970-01-01
    • 2017-02-05
    • 1970-01-01
    相关资源
    最近更新 更多