关于自动触发linkbutton onclick事件
详细请看如下。主页面有2个webcontrol。Detail 和 summary
主页部分:
- HTML code
<tr> <td colspan="2"> <asp:LinkButton ID="lnkbtnAddItem" runat="server" OnClick="lnkbtnAddItem_Click">Add Item</asp:LinkButton> <asp:LinkButton ID="lnkbtnUpdate" runat="server" OnClick="lnkbtnUpdate_Click">Update</asp:LinkButton> </td> </tr> <tr> <td colspan="2"> <asp:UpdatePanel ID="updatepanel1" runat="server" UpdateMode="Always"> <ContentTemplate> <table cellpadding="0" cellspacing="0" width="100%"> <tr> <td> <cc1:TabContainer ID="TabContainerADMF07" runat="server" Width="100%"> <cc1:TabPanel runat="server" HeaderText="" ID="TabPanelADMF07Detail"> <HeaderTemplate> Details </HeaderTemplate> <ContentTemplate> <uc1:uc_ADM_F07Detail ID="uc_ADM_F07Detail1" runat="server" /> </ContentTemplate> </cc1:TabPanel> <cc1:TabPanel runat="server" HeaderText="" ID="TabPanelADMF07Summary"> <HeaderTemplate> Summary </HeaderTemplate> <ContentTemplate> <uc2:uc_ADM_F07Summary ID="uc_ADM_F07Summary1" runat="server" /> </ContentTemplate> </cc1:TabPanel> </cc1:TabContainer> </td> </tr> </table> </ContentTemplate> <Triggers> <asp:AsyncPostBackTrigger ControlID="lnkbtnUpdate" EventName="Click" /> </Triggers> </asp:UpdatePanel> </td> </tr>
Detail页面部分(就一个gridview控件):
- HTML code
<asp:GridView ID="grdviewadmf07_dtl" runat="server" Width="100%" AutoGenerateColumns="False" DataKeyNames="netno" AllowPaging="True" AllowSorting="false" OnPageIndexChanging="grdviewadmf07_dtl_PageIndexChanging" OnRowCommand="grdviewadmf07_dtl_RowCommand" OnSorting="grdviewadmf07_dtl_Sorting" OnRowDataBound="grdviewadmf07_dtl_OnRowDataBound" OnRowDeleting="grdviewadmf07_dtl_OnRowDeleting" PageSize="20"> <Columns> <asp:TemplateField ShowHeader="False"> <ItemTemplate> <asp:LinkButton ID="lnkbtnDelete" runat="server" CausesValidation="false" OnClientClick='return confirm("Are you sure your want to delete this record?");' CommandName="Delete" Text="Delete"></asp:LinkButton> </ItemTemplate> </asp:TemplateField> <asp:ButtonField CommandName="Open" Text="Open" /> <asp:ButtonField CommandName="View" DataTextField="netno" HeaderText="Client Code" SortExpression="netno" /> <asp:BoundField DataField="CategoryName" HeaderText="Category" SortExpression="CategoryName" /> <asp:TemplateField HeaderText="Total Hrs."> <ItemTemplate> <asp:Label ID="lbltotalhours" runat="server" Text='<%#Eval("total") %>'></asp:Label> </ItemTemplate> </asp:TemplateField> <asp:TemplateField> <HeaderTemplate> 1(<asp:Label ID="lbltotalday1" runat="server"></asp:Label>) </HeaderTemplate> <ItemTemplate> <asp:TextBox ID="txtday1" runat="server" Width="30px" onkeypress="isNum();" OnTextChanged="txtDay_OntextChanged" AutoPostBack="true" Text='<%#Eval("day1") %>'></asp:TextBox> </ItemTemplate> </asp:TemplateField> <asp:TemplateField> <HeaderTemplate> 2(<asp:Label ID="lbltotalday2" runat="server"></asp:Label>) </HeaderTemplate> <ItemTemplate> <asp:TextBox ID="txtday2" runat="server" Width="30px" onkeypress="isNum();" OnTextChanged="txtDay_OntextChanged" AutoPostBack="true" Text='<%#Eval("day2") %>'></asp:TextBox> </ItemTemplate> </asp:TemplateField>
我想实现的功能是这样的:在gridview里面 填数据,填好后gridview里面有些label值会自动更新。而且有部分label值要传给“webcontrol页面(Summary)”里面。我写了个Update控件事件已经写好。只要我点一下"Update",Summary页面的值才会更新。否则不会。
所以我就想:如果webcontrol页面—etail)里面的值更新后,“webcontrol页面(Summary)”里面也会自动更新。那就是自动触发Update onclick事件。不需要手动点击。
接下来问题来了:我在webcontrol页面—etail)后台代码如下:
- C# code
Response.Write("<script>self.opener.document.getElementById('ctl00_ContentPlaceHolder_Main_lnkbtnUpdate').click();</script>");主页面前台我也加了
- HTML code
<Triggers> <asp:AsyncPostBackTrigger ControlID="lnkbtnUpdate" EventName="Click" /> </Triggers>
但是不行。不能自动触发。错误如下:
Sys.WebForms.PageRequestManagerParserErrorException: 无法分析从服务器收到的消息。之所以出现此错误,常见的原因是: 在通过调用 Response.Write() 修改响应时,将启用响应筛选器、HttpModule 或服务器跟踪。
详细信息: 分析附近的“<script>self.opener.”时出错
求各位大侠指点。
[解决办法]
- C# code
ScriptManager.RegisterStartupScript(updatepanel1, GetType(), "click", "document.getElementById('ctl00_ContentPlaceHolder_Main_lnkbtnUpdate').click();", true);