Gridview 行命令事件未使用 jquery mobile 触发

Posted

技术标签:

【中文标题】Gridview 行命令事件未使用 jquery mobile 触发【英文标题】:Griview row command event not firing with jquery mobile 【发布时间】:2013-10-08 18:29:53 【问题描述】:

您好,我正在使用 jquery 移动应用程序,但遇到了 Gridview 行命令事件触发的问题。

这是我在 aspx 页面中的代码

<asp:GridView runat="server" ID="Grd_List" Width="100%" GridLines="none" AutoGenerateColumns="false" Style="margin-top: 0px;" OnRowCommand="Grd_List_RowCommand">
<Columns>
    <asp:TemplateField>
        <ItemTemplate>
            <table data-role="table" id="table1" data-mode="columntoggle" class="ui-body-d ui-shadow table-stripe ui-responsive table1" data-column-btn-theme="c" data-column-popup-theme="c">
                <thead>
                    <tr class="thead">
                        <th>&nbsp;</th>
                        <th>PC</th>
                        <th>QC</th>
                    </tr>
                </thead>
                <tr>
                    <td class="heading"><strong>Part #</strong></td>
                    <td><%# Eval("pn-pc") %></td>
                    <td><%# Eval("pn-qc") %></td>
                </tr>
                <tr>
                    <td class="heading"><strong>Closure Size</strong></td>
                    <td><%# Eval("xmlfile-pc") %></td>
                    <td><%# Eval("xmlfile-qc") %></td>
                </tr>
                <tr>
                    <td class="heading"><strong>Quantity per Case</strong></td>
                    <td>72</td>
                    <td>72</td>
                </tr>
                <tr>
                    <td class="heading"><strong>Price</strong></td>
                    <td><%# Eval("Price-pc", "0:C") %></td>
                    <td><%# Eval("Price-qc", "0:C") %></td>
                </tr>
                <tr>
                    <td><strong>Add to Cart</strong></td>
                    <td>
                        <asp:HiddenField runat="server" ID="xmlfile_PC" Value='<%# Eval("xmlfile-pc") %>' />
                        <asp:TextBox runat="server" ID="qty_pc" name="text-basic" Text="1"></asp:TextBox>
                        <asp:LinkButton runat="server" ID="btn_pc" CssClass="add-cart" CommandName="pc" CommandArgument='<%# Eval("id-pc") %>'><i class="add-to-cart-icon"></i>Add to Cart</asp:LinkButton>
                    </td>
                    <td>
                        <asp:HiddenField runat="server" ID="xmlfile_QC" Value='<%# Eval("xmlfile-qc") %>' />
                        <asp:TextBox runat="server" ID="qty_qc" Text="1"></asp:TextBox>
                        <asp:LinkButton runat="server" ID="btn_qc" CssClass="add-cart" CommandName="qc" CommandArgument='<%# Eval("id-qc") %>'><i class="add-to-cart-icon"></i>Add to Cart</asp:LinkButton>
                    </td>
                </tr>
            </table>
        </ItemTemplate>
    </asp:TemplateField>
</Columns>

这是 RowCommand 事件代码背后的代码:

protected void Grd_List_RowCommand(object sender, GridViewCommandEventArgs e)

    if (e.CommandName == "pc")
    
        GridViewRow gvr = (GridViewRow)(((LinkButton)e.CommandSource).NamingContainer);
        int RowIndex = gvr.RowIndex;

        int CatID = Convert.ToInt32(Request.QueryString["id"]);
        TextBox txtqtyPC = Grd_List.Rows[RowIndex].FindControl("qty_pc") as TextBox;
        HiddenField xmlfile = Grd_List.Rows[RowIndex].FindControl("xmlfile_PC") as HiddenField;
        int qty = Convert.ToInt32(txtqtyPC.Text);


        Response.Redirect("view-cart.aspx?qty=" + qty + "&prinfo=" + CatID + "^" + e.CommandArgument.ToString() + "^" + xmlfile.Value);
    

当我浏览我的应用程序时,此事件没有触发.. 有什么帮助吗? 谢谢

【问题讨论】:

如果没有错,您需要为每一列制作 ItemTemplate,而不是将整个表格放在一个 itemTemplate 中 不,使用多个项目模板也不起作用 您正试图在代码中将命令名称设为 pc,但它在您的标记中而不是 pc' you have written qc 中丢失了` 请仔细检查我的代码,我有它.. 您需要处理您的 Gridview 标记,将整个表格放在 itemtemplate 中确实不是一个好主意,而且它是分开的,您仍然面临同样的问题,使用中继器控制 【参考方案1】:

我认为你需要注册你甚至示例代码也检查属性onrowdatabound="gv_RowDataBound"

protected void gv_RowDataBound(object sender, GridViewRowEventArgs e)

    //Show Message
    LinkButton lb = e.Row.FindControl("lnkBtnShowDetails") as LinkButton;
    if (lb != null)
        ScriptManager.GetCurrent(this).RegisterAsyncPostBackControl(lb);

【讨论】:

他们使用Gridview1_RowCommand 并没有错。 gv_RowDataBound 将绑定在每一行绑定上。

以上是关于Gridview 行命令事件未使用 jquery mobile 触发的主要内容,如果未能解决你的问题,请参考以下文章

JQuery 更改 ASP:GridView 行的背景颜色

GridView RowDataBound事件未运行

如何使用 Jquery 重新排序 Gridview 行?

GridView RowCommand 事件未触发

输入不会保存在Gridview行更新事件中

GridView PageIndexChanging 事件未在 UpdatePanel 内触发