リピーターに更新パネルを配置した後、編集ボタンまたはその他のボタンをクリックするたびにリピーターが折りたたまれます (リピーターにはトグル機能を備えたヘッダーと詳細の分割があります)詳細セクションを折りたたみます。更新パネルを追加する前に、リピーターの詳細セクションで編集ボタンをクリックすると、テキストボックスが有効になり、折りたたまれずにキャンセルと保存ボタンが表示されます。更新パネルを追加した後、EDIT、UPDATE、SAVE、CANCELすべてが正常に機能していますが、クリックするたびに詳細セクションが折りたたまれており、UPDATE を実行するために展開する必要があります。更新パネルを追加した後、アイテム コマンドのすべてのコードは正常に機能しますが、上記の [編集] をクリックすると折りたたまれる問題が発生します。
コードは次のとおりです
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:Repeater ID="Repeater1" runat="server" DataSourceID="SqlDataSource1">
<ItemTemplate>
<div id='h<%# DataBinder.Eval(Container, "ItemIndex") %>' class="heder"
onclick='ToggleDisplay(<%# DataBinder.Eval(Container, "ItemIndex") %>);' style="border-style: none; font-weight: normal;">
<asp:Panel ID="Panel3" runat="server" Height="30px" BorderStyle="None" BackColor="#DCE4FA">
<asp:HiddenField ID="hdnItemIndex" runat ="server" Value='<%# DataBinder.Eval (Container, "ItemIndex") %>' />
<%# DataBinder.Eval(Container.DataItem, "LicenseID")%>
</asp:Panel>
</div>
<div id='d<%# DataBinder.Eval(Container, "ItemIndex") %>' class="details">
<asp:Panel ID="Panel2" runat="server" Height="195px" BackColor="Gray" Font-Bold="False" ForeColor="Maroon">
<br />
<asp:TextBox ID="TextBox2" runat="server" Text='<%# DataBinder.Eval(Container.DataItem,"LicenseName")%>' Enabled="false" BackColor="Gray" BorderStyle="None"></asp:TextBox>
<asp:LinkButton ID="lnkEdit" runat="server" CommandName="edit" CommandArgument='<%# DataBinder.Eval(Container.DataItem, "LicenseID") %>' Font-Bold="True" ForeColor="Black" >Edit</asp:LinkButton>
</asp:Panel>
</div>
</ItemTemplate>
</asp:Repeater>
</ContentTemplate>
</asp:UpdatePanel>
コードビハインド
Protected Sub Repeater1_ItemCommand(source As Object, e As System.Web.UI.WebControls.RepeaterCommandEventArgs) Handles Repeater1.ItemCommand
If e.CommandName.ToLower() = "edit" Then
Dim hdnItemIndex As HiddenField = DirectCast(DirectCast(e.CommandSource, LinkButton).NamingContainer.FindControl("hdnItemIndex"), HiddenField)
Dim myScript As String = "ToggleDisplay(" + hdnItemIndex.Value & ");"
Page.ClientScript.RegisterStartupScript(Me.[GetType](), "RegisterStartupScript", myScript, True)
End If
For Each rptItem As RepeaterItem In Repeater1.Items
Dim Textbox1 As TextBox = DirectCast(rptItem.FindControl("Textbox1 "), TextBox)
If Textbox1 IsNot Nothing Then
Response.Write(Textbox1.Text)
End If
Next
If e.CommandName = "edit" Then
DirectCast(e.Item.FindControl("TextBox2"), TextBox).Enabled = True
DirectCast(e.Item.FindControl("Textbox2"), TextBox).BorderStyle = BorderStyle.NotSet
DirectCast(e.Item.FindControl("Textbox2"), TextBox).BackColor = Drawing.Color.White
End if
前もって感謝します