将更新面板放入我的转发器细节后,转发器在每次单击“编辑按钮”或其他按钮时都会折叠。(转发器具有带切换功能的标题和细节部分) 我有一个隐藏的文件,有助于编辑更新...没有折叠细节部分。在我点击转发器的详细信息部分中的编辑按钮添加更新面板之前,文本框将变为启用,将显示取消和保存按钮与在添加更新面板编辑,更新,保存,取消后,每件事情都正常工作,但每次点击细节部分都会崩溃,我必须进行扩展才能进行更新。添加更新面板后,项目命令中的所有代码都正常工作,除了上面提到的点击编辑的折叠问题。
代码如下
<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
提前致谢
答案 0 :(得分:0)
有几种方法可以实现这一目标,
第一
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="Yourcontrol" EventName="YourEvent" />
</Triggers>
</asp:UpdatePanel>
第二
您也可以使用AJAX(不是.NET简易版)
而不是使用.NET AJAX库(这是退出havy。你可以添加一些脚本将字符串发布到特定的URL。然后该URL将执行你喜欢的任何内容
function btnAddMeter() {
$.ajax({
type: 'POST',
url: "MeterIntake.aspx/AddMeter?"
+ "discipline=" + $('#ddlDisciplines').val()
+ "&meterType=" + $('#ddlMeteringType').val()
+ "&description=" + $('#ddlDescription').val()
+ "&meternumber=" + $('#txtMeterNumber').val(),
contentType: 'application/json; charset=utf-8',
datatype: 'json',
success: function (data) {
try {
if (data.d == "Invalid") {
document.getElementById('lblValidation').innerHTML = "Ongeldige invoer!";
}
if (data.d == "Exists") {
document.getElementById('lblValidation').innerHTML = "Meter is reeds eerder binnengeboekt";
document.getElementById('txtMeterNumber').value = "";
document.getElementById('txtMeterNumber').focus();
}
else {
$('#ScanTable > tbody:last')
.append("<tr>" +
"<td>" + data.d.discipline + "</td>" +
"<td>" + data.d.meterType + "</td>" +
"<td>" + data.d.description + "</td>" +
"<td>" + data.d.meternumber + "</td>" +
"</tr>");
document.getElementById('txtMeterNumber').value = "";
document.getElementById('txtMeterNumber').focus();
document.getElementById('lblValidation').innerHTML = "";
}
}
catch (e) {
alert("Error in service! Please try again");
}
}
});
}
您应该用自己的代码/控件替换它。
希望它有所帮助。