ページにユーザーコントロールを動的にロードする必要があります。ユーザーコントロール内にチェックボックス付きのグリッドビューがあります。
ユーザーコントロールは、クリックされたタブに基づいて動的にロードされます。
ユーザーは、一番上のチェックボックスをクリックすると、すべてのチェックボックスを選択できます。
私はこの機能を実行するために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();
}
これが私が従うリファレンスです。