【问题标题】:JavaScript not working with RadTabStrip asp.netJavaScript 不适用于 RadTabStrip asp.net
【发布时间】:2013-07-12 15:03:11
【问题描述】:

在我决定使用 RadTabStrip 之前,我有一个用于嵌套网格的 javascript。

JavaScript 代码:

<asp:Content ID="HeaderContent" runat="server" ContentPlaceHolderID="HeadContent">
<link rel="stylesheet" href="http://code.jquery.com/ui/1.10.3/themes/smoothness/jquery-ui.css" />
<script type="text/javascript" src="http://code.jquery.com/jquery-1.9.1.js"> </script>
<script type="text/javascript" src="http://code.jquery.com/ui/1.10.3/jquery-ui.js">     </script>
 <script type="text/javascript">
   function collapseExpand(obj) {
    var gvObject = document.getElementById(obj);
    var imageID = document.getElementById('image' + obj);

    if (gvObject.style.display == "none") {
        gvObject.style.display = "inline";
        imageID.src = "~/ims/Images/bullet_toggle_minus.jpg";
    }
    else {
        gvObject.style.display = "none";
        imageID.src = "~/ims/Images/bullet_toggle_plus.jpg";
    }
}
</script>
</asp:content>

RadTab 代码:

<telerik:RadTabStrip ID="RadTabStrip1" runat="server">
<Tabs> 
<telerik:RadTab  runat="server" Text="tab1">
<TabTemplate>
<telerik:RadGrid ID="GridView1" runat="server" AutoGenerateColumns="False" 
    BackColor="White" BorderColor="#E7E7FF" BorderStyle="None" BorderWidth="1px" 
    CellPadding="3" GridLines="Horizontal" OnItemDataBound="RadGrid2_ItemDataBound" >
<MasterTableView DataKeyNames="id1">
<Columns>
<telerik:GridTemplateColumn>
<ItemTemplate>
<a href="javascript:collapseExpand('id1_<%# Eval("id1") %>');">
<img id="imageSubId_<%# Eval("id1") %>" alt="Click to show/hide orders" border="0" src="Images/bullet_toggle_plus.jpg" />
</a>
</ItemTemplate>
</telerik:GridTemplateColumn>
<telerik:GridBoundColumn DataField="id1" HeaderText="ID"/>
<telerik:GridTemplateColumn>
<ItemTemplate>
            <tr>
            <td colspan="100%">
            <div id="id1_<%# Eval("id1") %>" style="display: none; position: relative; left: 25px;">
            <telerik:RadGrid ID="GridView2" runat="server" AutoGenerateColumns="false" CellPadding="4" ForeColor="#333333" 
                    GridLines="None" >
            <MasterTableView >
                    <Columns>
                    <telerik:GridBoundColumn DataField="fname" HeaderText="First Name" />
                    <telerik:GridBoundColumn DataField="mname" HeaderText="Middle Name" />
                    <telerik:GridBoundColumn DataField="lname" HeaderText="Last Name" />
                    <telerik:GridTemplateColumn>
                    <ItemTemplate>
                    <asp:CheckBox ID="checkselect" runat="server" />
                    </ItemTemplate>
                    <HeaderTemplate>
                    <asp:Button ID="Button4" runat="server" Text="Remove"  CommandName="Split"  />
                    </HeaderTemplate>
                    </telerik:GridTemplateColumn>
                    </Columns>
                    </MasterTableView >
             </telerik:RadGrid>
             </div>
             </td>
             </tr>
 </ItemTemplate>
 </telerik:GridTemplateColumn>
 </Columns>
 </MasterTableView>
 </telerik:RadGrid>
 </TabTemplate>
 </telerik:RadTab>
 </Tabs>
 </telerik:RadTabStrip>

此代码在没有标签的情况下运行良好。另外,我认为问题在于 CollapseExpand 函数与选项卡的兼容性。

有人可以帮我解决这个问题吗?

谢谢。

【问题讨论】:

    标签: jquery asp.net telerik


    【解决方案1】:

    几件事...

    首先,我没有看到任何 jQuery,只是普通的 javascript(不是你的问题,只是说)。

    其次,&lt;a href="javascript:collapseExpand('d1_&lt;%# Eval("id1") %&gt;');"&gt; 看起来应该是 &lt;a href="javascript:collapseExpand('id1_&lt;%# Eval("id1") %&gt;');"&gt;d1_id1_)。

    第三,我认为您更改图像的代码不起作用。

    假设&lt;%# Eval("id1") %&gt;4。所以 div 的 id 是id1_4。这意味着var imageID = document.getElementById('image' + obj); 会将imageID 设置为imageid1_4,当您的图像的实际 id 是imageSubId_4

    【讨论】:

    • 是的,它的 Java 脚本。 d1 是拼写错误,不用担心。
    • 另外,我同意图像不会改变,但是当我点击该图像时,它正在展开和折叠,自从我转移到 radtabstrip 后,这种情况就没有发生。
    • 您是否在浏览器控制台中看到任何错误?如果您查看页面的来源或检查内部网格,那里的数据是否符合您的预期?
    • 是的,父子网格视图的数据是正确的。唯一的问题是视图不像预期的那样。我的意思是我看到像“>”这样的符号,当我点击它们时,什么也没有发生。
    【解决方案2】:

    抱歉回复晚了。

    请尝试以下代码 sn-p。

    JS

            <script type="text/javascript">
            function collapseExpand(obj) {
                var gvObject = document.getElementById('div_' + obj);
                var imageID = document.getElementById('imageSubId_' + obj);
    
                if (gvObject.style.display == "none") {
                    gvObject.style.display = "inline";
                    imageID.src = "http://www.fimfiction-static.net/images/icons/collapse.png";
                }
                else {
                    gvObject.style.display = "none";
                    imageID.src = "http://jlpa.trinitylaban.ac.uk/WebCat_Images/English/Other/MiscD/admin-icon-expand.png";
                }
            }
        </script>
    

    ASPX

        <telerik:RadTabStrip ID="RadTabStrip1" runat="server">
        <Tabs>
            <telerik:RadTab runat="server" Text="tab1">
                <TabTemplate>
                    <telerik:RadGrid ID="GridView1" runat="server" AutoGenerateColumns="False" BackColor="White"
                        BorderColor="#E7E7FF" BorderStyle="None" BorderWidth="1px" CellPadding="3" GridLines="Horizontal"
                        OnNeedDataSource="GridView1_NeedDataSource">
                        <MasterTableView DataKeyNames="ID">
                            <Columns>
                                <telerik:GridTemplateColumn>
                                    <ItemTemplate>
                                        <a onclick="javascript:collapseExpand('<%# Eval("ID") %>');">
                                            <img id="imageSubId_<%# Eval("ID") %>" alt="Click to show/hide orders" src="http://jlpa.trinitylaban.ac.uk/WebCat_Images/English/Other/MiscD/admin-icon-expand.png" />
                                        </a>
                                    </ItemTemplate>
                                </telerik:GridTemplateColumn>
                                <telerik:GridBoundColumn DataField="ID" HeaderText="ID" />
                                <telerik:GridTemplateColumn>
                                    <ItemTemplate>
                                        <tr>
                                            <td colspan="100%">
                                                <div id="div_<%# Eval("ID") %>" style="display: none; position: relative; left: 25px;">
                                                    <telerik:RadGrid ID="GridView2" runat="server" AutoGenerateColumns="false" CellPadding="4"
                                                        ForeColor="#333333" GridLines="None" OnNeedDataSource="GridView1_NeedDataSource">
                                                        <MasterTableView>
                                                            <Columns>
                                                                <telerik:GridBoundColumn DataField="Name" HeaderText="First Name" />
                                                                <telerik:GridTemplateColumn>
                                                                    <ItemTemplate>
                                                                        <asp:CheckBox ID="checkselect" runat="server" />
                                                                    </ItemTemplate>
                                                                    <HeaderTemplate>
                                                                        <asp:Button ID="Button4" runat="server" Text="Remove" CommandName="Split" />
                                                                    </HeaderTemplate>
                                                                </telerik:GridTemplateColumn>
                                                            </Columns>
                                                        </MasterTableView>
                                                    </telerik:RadGrid>
                                                </div>
                                            </td>
                                        </tr>
                                    </ItemTemplate>
                                </telerik:GridTemplateColumn>
                            </Columns>
                        </MasterTableView>
                    </telerik:RadGrid>
                </TabTemplate>
            </telerik:RadTab>
        </Tabs>
    </telerik:RadTabStrip>
    

    ASPX.CS

    protected void GridView1_NeedDataSource(object sender, GridNeedDataSourceEventArgs e)
    {
        dynamic data = new[] {
            new { ID = 1, Name ="Name1"},
            new { ID = 2, Name = "Name2"},
            new { ID = 3, Name = "Name3"},
             new { ID = 4, Name = "Name4"},
            new { ID = 5, Name = "Name5"}
        };
    
        (sender as RadGrid).DataSource = data;
    }
    

    如果有任何问题,请告诉我。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-02-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-14
      • 2020-05-26
      相关资源
      最近更新 更多