我需要在我的页面中动态加载用户控件。我在用户控件中有一个带有复选框的gridview。
用户控件将根据单击的选项卡动态加载。
当用户单击最顶部的复选框时,允许用户选择所有复选框。
我正在使用 javascript 来执行此功能。
javascript 仅在我单击联系人时有效,但当我单击其他选项卡时。javascript 不起作用。
我打开查看源代码进行检查。联系人只有JavaScript。
我看不到任何用于销售订单和交货单的 javascript。
另外,我在每个不同的用户控件中嵌入了 javascript 这是我的 javascript
<script type="text/javascript">
function SelectAllCheckboxes1(chk) {
$('#<%=gvSaleOrder.ClientID%>').find("input:checkbox").each(function () {
if (this != chk) {
this.checked = chk.checked;
}
});
}
</script>
<asp:GridView ID="gvSaleOrder" runat="server" AllowPaging="True" AutoGenerateColumns="False"
CellPadding="4" CssClass="rightColumnModule2Table" DataKeyNames="SALES_ID,SALES_ORDER_CODE,STATUS"
ForeColor="#333333" GridLines="None" OnRowCommand="gvSaleOrder_RowCommand"
OnRowDataBound="gvSaleOrder_RowDataBound">
<AlternatingRowStyle CssClass="gvRowAlternative" />
<Columns>
<asp:TemplateField>
<HeaderTemplate>
<asp:CheckBox ID="chkSelectAll" runat="server" onclick="javascript:SelectAllCheckboxes1(this);"/>
</HeaderTemplate>
<ItemTemplate>
<asp:CheckBox ID="chkSelect" runat="server" />
</ItemTemplate>
<ItemStyle CssClass="gvRow1C" />
</asp:TemplateField>
<asp:TemplateField HeaderText="Sales Order Number">
<ItemTemplate>
<asp:LinkButton ID="lnkOrderNumber" runat="server" CommandArgument='<%#Eval("SALES_ORDER_CODE") %>'
CommandName="View" Text='<%#Eval("SALES_ORDER_CODE") %>' ></asp:LinkButton>
</ItemTemplate>
<ItemStyle CssClass="gvRow1C" />
</asp:TemplateField>
<asp:TemplateField HeaderText="Date">
<ItemTemplate>
<asp:Label ID="lblSalesOrderDate" runat="server" Text='<%#Eval("SALES_ORDER_DATE") %>'></asp:Label>
</ItemTemplate>
<ItemStyle CssClass="gvRow1C" />
</asp:TemplateField>
<asp:BoundField DataField="ACCOUNT_OWNER" HeaderText="Customer Name" ReadOnly="True"
SortExpression="ACCOUNT_OWNER">
<ItemStyle CssClass="gvRow1C" ForeColor="Black" />
</asp:BoundField>
<asp:TemplateField HeaderText="Total Amount">
<ItemTemplate>
<asp:Label ID="lblCurrency" runat="server" Text='<%#Eval("CURRENCY_NAME") %>'></asp:Label>
<asp:Label ID="lblTotalAmount" runat="server" Text='<%#Eval("TOTAL_AMOUNT") %>'></asp:Label>
</ItemTemplate>
<ItemStyle CssClass="gvRow1C" />
</asp:TemplateField>
<asp:TemplateField HeaderText="Status">
<ItemTemplate>
<asp:Label ID="lblStatus" runat="server" Text='<%#Eval("STATUS") %>'></asp:Label>
</ItemTemplate>
<ItemStyle CssClass="gvRow1C" />
</asp:TemplateField>
<asp:TemplateField HeaderText="Action">
<ItemTemplate>
<table width="100%">
<tr>
<td >
<asp:LinkButton ID="linkEdit" runat="server" CommandArgument='<%#Eval("SALES_ORDER_CODE") %>'
CommandName="Edits">Edit</asp:LinkButton>
<asp:LinkButton ID="linkDelete" runat="server" CommandArgument='<%#Eval("SALES_ORDER_CODE") %>'
CommandName="Deletes" OnClientClick="javascript:return confirm('Confirm Delete?');">Delete</asp:LinkButton>
</td>
</tr>
</table>
</ItemTemplate>
<ItemStyle CssClass="gvRow1C" />
</asp:TemplateField>
我的后端
private void loadControl()
{
if( (string)Session[subTaskURL] != "")
{
Control control = this.LoadControl(Session[subTaskURL].ToString());
if (control != null)
{
// Gives the control a unique ID. It is important to ensure
// the page working properly. So use control.GetType().Name
// as the ID.
control.ID = control.GetType().Name;
phSubContent.Controls.Add(control);
}
}
}
//--Ensure all control will be dispose--
public override void Dispose()
{
for (int i = 0; i < phSubContent.Controls.Count; i++)
{
Control ctrl = phSubContent.Controls[i];
if (ctrl != null)
ctrl.Dispose();
}
base.Dispose();
}
//**Ensure all control will be dispose**
protected override void OnInit(EventArgs e)
{
base.OnInit(e);
//--Run on first time .Get default menu for the item--
if (Session["subTaskID"] == null)
{
selectTopSubMenu();
}
adjustAccessLevelDB();
loadControl();
}
这是我遵循的参考。