0

addnew リンクをクリックすると、データグリッドの 2 行目として編集パネルを表示する必要があります。このために、display:none を設定した div を取得しました。addnew リンクをクリックすると、2 行目に表示できます。今、実際の問題が始まります。

この div には、カレンダー エクステンダーに関連付けられたテキスト ボックスがあり、テキスト ボックスのクリック時にカレンダーとして動作します。しかし、非表示の div の html がグリッドの 2 行目に挿入されている場合、カレンダーは表示されません。問題をよりよく理解するためのコードが必要な場合はお知らせください。どんな助けでも大歓迎です。

4

2 に答える 2

0
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %> 

<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="AjaxControlToolkit" %> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
    <title></title> 
    <script src="jquery-1.4.1.js" type="text/javascript"></script> 
    <script type="text/javascript"> 
        function AddCalendars() 
        { 

            //The last parameter should be the TargetControl's id. If you use "TextBox1", the TextBox1 would be associated. 
            var elem = $(".deneme"); 

            for (var a = 0; a < elem.length; a++) 
             { 
                 if ($find("CalendarExtender"  + elem[a].id)) 
                 { 
                   $find("CalendarExtender" + elem[a].id).dispose(); 
                 } 
            } 
            for (var i = 0; i < elem.length; i++) 
            { 
                $create(AjaxControlToolkit.CalendarBehavior, { "id": "CalendarExtender" + elem[i].id  }, null, null, elem[i]); 
            } 

        } 
    </script> 

</head> 
<body> 
    <form id="form1" runat="server"> 
    <div> 
        <asp:ScriptManager ID="ScriptManager1" runat="server" /> 
        <%--the dummy calendar which is used to download the related script file.--%> 
        <asp:TextBox ID="dummyTextBox" runat="server" Style="display: none"></asp:TextBox> 
        <AjaxControlToolkit:CalendarExtender ID="dummyCalendarExtender" runat="server" Enabled="True" 
            TargetControlID="dummyTextBox"> 
        </AjaxControlToolkit:CalendarExtender> 
        <%--the dummy calendar which is used to download the related script file.--%> 
        <asp:Button ID="Button1" OnClientClick="AddCalendars();return false" runat="server" 
            Text="CreateCalendarFromClient" /><br /> 
        input:<input id="deneme1" type="text" class="deneme" /><br /> 
        <br /> 
        <br /> 
        <br /> 
        <br /> 
        <br /> 
        <br /> 
        <br /> 
        TextBox: 
        <asp:TextBox ID="deneme2" runat="server" cssclass="deneme" ClientIDMode="Static"></asp:TextBox> 
    </div> 
    </form> 
</body> 
</html>
于 2012-07-16T11:39:45.427 に答える
0

グリッドビューで、div の代わりに templatedfield を配置します。そのテンプレート化されたフィールドにテキストボックスとカレンダーエクステンダーを保持させます。

<asp:GridView ID="GridView1" runat="server">
    <Columns>
        <asp:TemplateField>
            <ItemTemplate>
                <asp:TextBox ID="textbox1" runat="server"></asp:TextBox>
                <asp:CalendarExtender ID="CalendarExtender1" TargetControlID="textbox1" runat="server">
                </asp:CalendarExtender>
            </ItemTemplate>
        </asp:TemplateField>
    </Columns>
</asp:GridView>

しかし、挿入時にそれが必要な場合は、配置する必要があります

<asp:GridView ID="GridView1" runat="server">
    <Columns>
        <asp:TemplateField>
            <ItemTemplate>
                <asp:TextBox ID="textbox1" runat="server"></asp:TextBox>
                <asp:CalendarExtender ID="CalendarExtender1" TargetControlID="textbox1" runat="server">
                </asp:CalendarExtender>
            </ItemTemplate>
            <InsertItemTemplate>
                <asp:TextBox ID="textbox1" runat="server"></asp:TextBox>
                <asp:CalendarExtender ID="CalendarExtender1" TargetControlID="textbox1" runat="server">
                </asp:CalendarExtender>
            </InsertItemTemplate>
        </asp:TemplateField>
    </Columns>
</asp:GridView>

これが役立つことを願っています。

于 2012-06-19T15:00:44.813 に答える