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> </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 触发的主要内容,如果未能解决你的问题,请参考以下文章