none
JS取GridView模板里的控件 RRS feed

  • 问题

  • 问题描述:页面有一个Div(visable默认为false),一个GridView,一个LinkButton。LinkButton嵌套在GridView里。我写了一个脚本,功能是通过按LinkButton来显示Div。但我按了LinkButton后Div并不显示出来。这是为什么?

    另外,我如何能通过JS得到我点击得那个LinkButton?代码如下:

     

    页面代码:

    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title>GridView嵌套</title>
        <link href="Style/StyleSheet.css" type="text/css" rel="Stylesheet" />
        <script language="javascript" type="text/javascript">
            function DisplayDiv()
            {
                var divLabel = document.getElementById("divLabel");
                divLabel.style.display = "block";
            }
            function Close()
            {
                var divLabel = document.getElementById("divLabel");
                divLabel.style.display = "none";
            }
        </script>
    </head>
    <body onload="Close();">
        <form id="form1" runat="server">
        <div>
            <aspTongue TiedqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:NorthwindConnectionString %>" SelectCommand="SELECT [CustomerID], [CompanyName] FROM [Customers]"></aspTongue TiedqlDataSource>
            <asp:GridView ID="GridView1" runat="server" AllowPaging="True" AutoGenerateColumns="False" DataKeyNames="CustomerID" DataSourceID="SqlDataSource1" onrowdatabound="GridView1_RowDataBound">
                <RowStyle VerticalAlign="Top" />
                <Columns>
                    <asp:BoundField DataField="CustomerID" HeaderText="CustomerID" ReadOnly="True" SortExpression="CustomerID" />
                    <asp:BoundField DataField="CompanyName" HeaderText="CompanyName" SortExpression="CompanyName" />
                    <asp:TemplateField HeaderText="订单">
                        <ItemTemplate>
                            <aspTongue TiedqlDataSource ID="SqlDataSource2" runat="server" ConnectionString="<%$ ConnectionStrings:NorthwindConnectionString %>" SelectCommand="SELECT [OrderID], [OrderDate] FROM [Orders] WHERE ([CustomerID] = @CustomerID)">
                                <SelectParameters>
                                    <aspStick out tonguearameter Name="CustomerID" Type="String" />
                                </SelectParameters>
                            </aspTongue TiedqlDataSource>
                            <asp:GridView ID="GridView2" runat="server" AutoGenerateColumns="False" DataKeyNames="OrderID" DataSourceID="SqlDataSource2">
                                <Columns>
                                    <asp:BoundField DataField="OrderID" HeaderText="OrderID" InsertVisible="False" ReadOnly="True" SortExpression="OrderID" />
                                    <asp:BoundField DataField="OrderDate" HeaderText="OrderDate" SortExpression="OrderDate" />
                                    <asp:TemplateField>
                                        <ItemTemplate>
                                            <asp:LinkButton ID="lbtn" runat="server" Text="See" OnClientClick="DisplayDiv();" />
                                        </ItemTemplate>
                                    </asp:TemplateField>
                                </Columns>
                            </asp:GridView>
                        </ItemTemplate>
                    </asp:TemplateField>
                </Columns>
            </asp:GridView>
            <div id="divLabel">
                <asp:Label ID="lbl1" runat="server" Text="LABEL" /><asp:LinkButton ID="lbtn" runat="server" Text="TEST"  CssClass="spacing" />
            </div>
        </div>
        </form>
    </body>
    </html>

     

    请各位知道解决方案的朋友指导下,谢谢先:)
    2008年12月30日 0:01

答案

全部回复

  • OnClientClick="DisplayDiv();return false;"
    2008年12月30日 0:05
    版主
  • To:孟宪会:谢谢这么快得回复。我试过了,现在能显示了。我想确认下,return false这句的作用是不是起到防止因为点了服务器控件而刷页面的效果。就象return confirm(".....")一样。

    2008年12月30日 0:33
  • 是的,终止事件的执行,后面的服务器提交就不执行了
    2008年12月30日 0:40
    版主
  • To:孟宪会:哦,明白了。谢谢:)

    那么请教前面提问里的另一个问题:我如何通过JS得到GridView里的LinkButton?希望能指教

    2008年12月30日 0:45
  • 嵌套的控件,客户端一定要通过

    var s = "<%=xx.ClientID%>"

    document.getElementById(s)
    来引用

    如果是多个,有2个方法:
    1,在模板里定义js,
    2,<asp:LinkButton OnClientClick="method(this)"


    2008年12月30日 1:49
    版主