2011-02-28 64 views
-1

我有一个名为gvLineItems在asp.net页面的gridView ..我想扔在一些jquery允许双击gridview的行和让它重定向到另一页:Datagrid查看双击使用jQuery与asp.net

<script src="include/jquery-1.5.1.min.js" type="text/javascript"></script> 
<script type="text/javascript"> 

var selected = null; 

$(document).ready(function(){ 
    $("#divGridView table tbody tr").find("tr").dblclick(function(){ 
     window.location = "<%#ResolveUrl("~/Default2.aspx")%>?record=" + $(this).find("td:first").text(); 
    }); 
}); 

</script> 

有没有人在这里看到任何奇怪的东西?

这里是真正的丑陋asp.net Ajax和股利等...

<div id="divGridView" style="width:100%"> 
           <asp:UpdatePanel ID="myPanel" runat="server" > 
              <ContentTemplate> 
             <asp:GridView GridLines="Horizontal" CellPadding="4" Font-Size="Small" DataKeyNames="ID" Width="100%" AlternatingRowStyle-BackColor="#F0F8FF" BackColor="#E8E8E8" HeaderStyle-BackColor="#377CB1" ID="gvLineItems" runat="server" AllowSorting="True" AutoGenerateColumns="False" ShowFooter="True" > 
              <Columns> 

                <asp:TemplateField HeaderText="ID" SortExpression="ID" Visible="False"> 
                <ItemTemplate> 
                 <asp:Label ID="lblExpenseReportLineItemID" runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.ID") %>'></asp:Label> 
                </ItemTemplate> 
                </asp:TemplateField> 

                <asp:TemplateField> 
                <HeaderTemplate> 
                 <asp:CheckBox ID="HeaderLevelCheckBox" AutoPostBack="true" OnCheckedChanged="SelectAllRows" runat="server" /> 
                </HeaderTemplate> 
                <ItemTemplate> 
                 <asp:CheckBox ID="chkSelector" runat="server" onclick="ChangeRowColor(this)" /> 
                </ItemTemplate> 
                <ItemStyle HorizontalAlign="Center" Width="1%" /> 
                <HeaderStyle HorizontalAlign="Center" Width="1%" /> 
                </asp:TemplateField> 

                <asp:TemplateField> 
                 <ItemTemplate> 
                  <asp:ImageButton ID="ibAddLineItem" runat="server" ImageUrl="images/InsertRow.gif" CommandName="Insert" ToolTip="Insert line item" /> 
                 </ItemTemplate> 
                 <ItemStyle Width="1%" /> 
                </asp:TemplateField> 

                <asp:TemplateField> 
               <ItemTemplate> 

                 <asp:ImageButton ID="ibDelete" runat="server" CommandName="DeleteRow" ImageUrl="images/d.gif" 
                  ToolTip="Delete Line Item?" /> 

               </ItemTemplate> 
              </asp:TemplateField> 

                <asp:TemplateField HeaderText="Item Date" SortExpression="LineItemDate"> 
                 <ItemTemplate> 
                  <ajaxToolkit:CalendarExtender TargetControlID="txtLineItemDate" ID="CalendarExtender3" runat="server"> 
                  </ajaxToolkit:CalendarExtender> 
                  <asp:TextBox Width="60px" onchange='return isLessThanEndDate(this);' ID="txtLineItemDate" runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.LineItemDate") %>'> 
                  </asp:TextBox> 
                 </ItemTemplate> 
                 <ItemStyle HorizontalAlign="Center" Width="10%" /> 
                 <HeaderStyle ForeColor="White" HorizontalAlign="Center" Width="12%" /> 
                </asp:TemplateField>    

                <asp:TemplateField HeaderText="Comm.CU" SortExpression="Comm"> 
                 <ItemTemplate> 
                  <table width="100%" cellpadding="2" cellspacing="0" style=" border-style:solid; border-width:thin; border-color:#DDD;"> 
                   <tr> 
                   <td ><asp:TextBox Enabled="False" ToolTip="Click Search...To find a commission" Width="40px" ID="txtComm" runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.CommissionID") %>' /></td> 
                   </tr> 
                   <tr><td><asp:TextBox Enabled="False" ToolTip="Click Search...To find a cost unit" Width="40px" ID="txtWBS" runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.WBSID") %>' /></td></tr> 
                   <tr><td align="center"><a href='FindCommCost.aspx?ExpenseReportID=<%#Eval("ERID")%>&ExpenseReportLineItemID=<%#Eval("ID")%>' style="color:Navy">Search...</a></td></tr> 
                  </table> 



                 </ItemTemplate> 
                 <ItemStyle Width="1%" /> 
                </asp:TemplateField> 


                <asp:TemplateField HeaderText="Type" SortExpression="Reason"> 
                 <ItemTemplate> 
                  <asp:DropDownList ID="ddlExpenseTypes" OnSelectedIndexChanged="ddlExpenseTypes_SelectedIndexChanged" DataSource='<%# GetExpenseTypes() %>' SelectedValue='<%# Bind("ExpenseReasonID") %>' DataTextField="ExpenseReasonID" DataValueField="ExpenseReasonID" AutoPostBack="true" runat="server" ></asp:DropDownList> 
                 </ItemTemplate> 
                 <ItemStyle HorizontalAlign="Center" Width="1%" /> 
                </asp:TemplateField> 

                <asp:TemplateField HeaderText="Receipt" SortExpression="Date"> 
                 <ItemTemplate> 
                  <asp:CheckBox ID="cbReceipt" runat="server" Checked='<%# DataBinder.Eval(Container, "DataItem.HasReceipt") %>' /> 
                 </ItemTemplate> 
                 <HeaderStyle ForeColor="White" /> 
                 <ItemStyle HorizontalAlign="Center" Width="1%" /> 
                </asp:TemplateField>    

                <asp:TemplateField HeaderText="Amount" SortExpression="Amount"> 
                 <ItemTemplate> 
                  <asp:TextBox Width="40px" AutoPostBack="true" OnTextChanged="ChangedAmount" ID="txtAmount" runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.AmountSpent") %>' /> 
                 </ItemTemplate> 
                 <ItemStyle Width="1%" /> 
                </asp:TemplateField> 

                <asp:TemplateField HeaderText="Currency" SortExpression="Currency"> 
                 <ItemTemplate> 
                  <asp:DropDownList ID="ddlCurrency" OnSelectedIndexChanged="ddlCurrency_SelectedIndexChanged" runat="server" AutoPostBack="true" DataSource='<%# GetCurrency() %>' SelectedValue='<%# Bind("CountryID") %>' DataTextField="CountryID" DataValueField="CountryID"></asp:DropDownList> 
                 </ItemTemplate> 
                 <ItemStyle HorizontalAlign="Center" Width="1%" /> 
                </asp:TemplateField> 

                <asp:TemplateField HeaderText="Rate" SortExpression="Rate"> 
                 <ItemTemplate> 
                  <asp:TextBox Width="33px" AutoPostBack="true" ID="txtRate" OnTextChanged="ChangedAmount" runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.Rate") %>' /> 
                 </ItemTemplate> 
                 <ItemStyle Width="1%" /> 
                </asp:TemplateField> 

                <asp:TemplateField HeaderText="USD" SortExpression="USD"> 
                 <ItemTemplate> 
                  <asp:Label ID="lblUSD" runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.AmountBackInUSD") %>' /> 
                 </ItemTemplate> 
                 <ItemStyle Width="1%" /> 
                </asp:TemplateField> 

                <asp:TemplateField HeaderText="Desc." SortExpression="Desc."> 
                 <ItemTemplate> 
                  <asp:TextBox Width="100px" Font-Names="Arial" ToolTip="If the expense type is Entertainment this field is required!" ID="txtExpenseReasonDescription" runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.ExpenseReasonDescription") %>' /> 
                 </ItemTemplate> 
                 <ItemStyle Width="1%" HorizontalAlign="Left" /> 
                </asp:TemplateField> 


                <asp:HyperLinkField HeaderText="Link" SortExpression="Link" DataNavigateUrlFields="AttachmentLink" DataNavigateUrlFormatString="{0}" 
               DataTextField="AttachmentLink" DataTextFormatString="Link" Target="_blank" > 
                 <ControlStyle ForeColor="Navy" /> 
                 <HeaderStyle ForeColor="White" /> 
                </asp:HyperLinkField> 

                <asp:TemplateField HeaderText="Upload File?" SortExpression="ID" > 
                <ItemTemplate> 
                 <asp:FileUpload Width="90px" Font-Size="xx-small" ID="fuAttachment" runat="server" /> 
                 <asp:Button ID="btnUpload" font-size="xx-small" runat="server" Text="Upload" OnClick="UploadTheFile" /> 
                </ItemTemplate> 
                 <HeaderStyle ForeColor="White" /> 
                 <ItemStyle Width="50%" /> 
                </asp:TemplateField> 
              </Columns> 
              <HeaderStyle BackColor="#377CB1" /> 
              <AlternatingRowStyle BackColor="AliceBlue" /> 
              <FooterStyle CssClass="FooterStyle" /> 
             </asp:GridView> 
             <div style="width:100%"> 
              <br /> 
            <asp:UpdateProgress ID="udProgress" runat="server" DisplayAfter="100" Visible="True" DynamicLayout="True"><ProgressTemplate><img border="0" src="images/loading.gif" alt="loading" /></ProgressTemplate></asp:UpdateProgress> 
              <br /> 
              <asp:Label ID="lblMessage2" runat="server"></asp:Label> 
             </div> 
             <div style="width:100%; text-align:right;"> 
             <table width="100%" cellpadding="2" cellspacing="0"> 
             <tr> 
             <td class="tableFields" style="height: 68px"> 
              &nbsp;</td> 
             <td align="right"> 
             <asp:Panel ID="pGridControls" runat="server" Width="100%" Visible="False"> 
              <asp:Label ID="Label2" runat="server" Text="Click Update to <u>save</u> any changes" Font-Bold="True" ForeColor="#377CB1"></asp:Label> 
             <asp:ImageButton ID="ibSaveGrid" runat="server" ImageUrl="images/smallSave.gif" ToolTip="Save/refresh changes?" CausesValidation="False" OnClick="ibSaveGrid_Click" /><asp:ImageButton ID="ibDeleteGrid" runat="server" ImageUrl="images/smallDelete.gif" ToolTip="Delete checked rows?" CausesValidation="False" OnClick="ibDeleteGrid_Click" /></asp:Panel> 
              <hr /> <h3> 
               <asp:Panel ID="Panel5" runat="server" Width="50%" HorizontalAlign="Right" BackColor= "#F0FFF0" CssClass="PadIt"> 
                <ajaxToolkit:RoundedCornersExtender ID="RoundedCornersExtender4" runat="server" TargetControlID="Panel5" Radius="6" Corners="All" BorderColor="#377CB1" Color="#F0FFF0"> 
                </ajaxToolkit:RoundedCornersExtender> 
               Employee Due (USD):<asp:Label ID="lblMessage3" runat="server"></asp:Label> 
               </asp:Panel> 
               </h3> </td> 
             </tr> 
             </table> 
             </div> 
            </ContentTemplate> 
            <Triggers> 
             <asp:AsyncPostBackTrigger ControlID="ibOk" /> 
             <asp:AsyncPostBackTrigger ControlID="rbSort" /> 
            </Triggers> 
           </asp:UpdatePanel> 
            <asp:Literal ID="CheckBoxIDsArray" runat="server"></asp:Literal></div> 
           </td> 
          </tr> 
         </table> 
          </asp:Panel> 
        </div> 

这里是我的编辑:

<script type="text/javascript"> 

var selected = null; 

$(document).ready(function(){ 
    $("#divGridView table tbody tr").dblclick(function(){ 
     window.location = "<%#ResolveUrl("~/Default2.aspx")%>?ID=" + $(this).find("td:first").text(); 
    }); 
}); 

</script> 

我现在几乎得到它的工作.. 。我可以看到正确的ID号码,开始了解重定向不起作用的原因。

+0

你两条线做两件不同的事情。你想要哪一个? – SLaks 2011-02-28 19:01:55

+0

只需寻找重定向位置。 – JonH 2011-02-28 19:02:54

+0

从技术上说,您并未发布任何内容。您只是将浏览器重定向到一个新的URL。除此之外,它看起来很好。没有更多的代码很难说。你是否已经测试过这个并遇到问题? – Jeff 2011-02-28 19:07:21

回答

0

这里是我落得这样做:

<script type="text/javascript"> 

var selected = null; 

$(document).ready(function(){ 
    $("#divGridView table tbody tr").dblclick(function(){ 
     //window.location = "<%#ResolveUrl("~/Search.aspx")%>?ID=" + $(this).find("td:first").text(); 
     window.location = "myURL/Search.aspx?ID=" + $(this).find("td:first").text(); 
    }); 
}); 

</script> 
1

括在<div id="divGridView" /> GridView和尝试这个

$(document).ready(function(){ 
    $("#divGridView table tbody tr").dblclick(function(){ 
    var id= $(this).find("td:first").text(); 
     window.location = "<%#ResolveUrl("~/Default2.aspx")%>?record=" + id; 
    }); 
}); 
+0

@StackOverflowException - 没有像我的错误,但是当我双击网格视图行它doesnt做任何事情。 – JonH 2011-02-28 19:15:15

+0

@JonH你可以发布为网格呈现的HTML,至少可以连接几行吗? – 2011-02-28 19:16:27

+0

如果您使用的是具有JS调试功能的浏览器,请执行以下操作:$(“#divGridView table tbody tr”)。length,它给您什么值? – 2011-02-28 19:23:35

1

你正在寻找让你的ID标签,$(this).find("td:first").text()具有Visible=false这将导致它不会被渲染,所以jQuery将找不到它。 最简单的解决方案可能是把ID的标记(如span),这只是渲染使用display:none无形的客户端在第一显示器列

+0

@jamietre - 我也想到了这一点,并将可见性更改为true,但仍然是相同的问题 – JonH 2011-02-28 19:32:00

+0

也可能是您尝试绑定的问题。它看起来像试图将双击绑定到'tr'标签 - 行不是可点击的实体。在Chrome中使用它,并使用javascript调试器来设置一个断点并测试你的jQuery,看看返回的是什么。仅供参考 - 我不知道这是普遍的还是仅仅是我,但是在使用Chrome的脚本调试器时,$永远不会工作,您必须在立即窗口中键入'jQuery'来进行播放。 – 2011-02-28 19:36:11

+0

其实我回来了,关于行不可点击,whaddya知道,这是一个很好的简单示例:http://www.electrictoolbox.com/jquey-make-entire-table-row-clickable/ ...我认为在你的情况下,问题是选择器中的最后一个'find'。那在子元素中寻找一个'tr' - 我想你只是想失去最后的发现。你也不需要在选择器中确定heirarchy的每个部分,'(“#divGridView tr”)'会做你需要的。 – 2011-02-28 19:43:28