我有一个包含4个可见列的gridview,第一个可见列包含一个评估ID的链接按钮,第四个可见列包含一个复选框。
最好使用javascript我想在单击链接按钮时检查相应的复选框(同一行),同时取消选中gridview中的所有其他复选框。
<asp:GridView ID="gdvSalesOrder" runat="server" Width="100%" HorizontalAlign="Center"
AutoGenerateColumns="false" CssClass="mGrid" PagerStyle-CssClass="pgr" AlternatingRowStyle-CssClass="alt"
SelectedRowStyle-CssClass="alt-backcolour">
<Columns>
<asp:TemplateField Visible="false">
<ItemTemplate>
<asp:TextBox ID="txtID" runat="server" Text='<%# Eval("Id") %>'></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
<asp:CommandField Visible="false" ShowSelectButton="true" />
<asp:TemplateField HeaderText="ORDER NUMBER" ItemStyle-Width="31%" ItemStyle-HorizontalAlign="Center">
<HeaderStyle HorizontalAlign="Center" />
<ItemTemplate>
<asp:LinkButton ID="lnkOrderNumber" ClientIDMode="Static" runat="server" CommandName="select"
CommandArgument='<%# Eval("OrderNumber") %>' Text='<%# Eval("OrderNumber") %>'></asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="ACCOUNT REF" ItemStyle-Width="31%" ItemStyle-HorizontalAlign="Center">
<HeaderStyle HorizontalAlign="Center" />
<ItemTemplate>
<asp:Label ID="lblCustomerAccountReference" runat="server" Text='<%# Eval("CustomerAccountReference") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="QUOTED DUE DATE" ItemStyle-Width="31%" ItemStyle-HorizontalAlign="Center">
<HeaderStyle HorizontalAlign="Center" />
<ItemTemplate>
<asp:Label ID="lblQuotedDueDate" runat="server" Text='<%# Eval("QuotedDueDate", "{0:d}") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField ItemStyle-Width="6%" ItemStyle-HorizontalAlign="Center">
<HeaderStyle HorizontalAlign="Center" />
<HeaderTemplate>
<input id="chkAll" type="checkbox" onclick="javascript:SelectAllCheckboxes(this);" />
</HeaderTemplate>
<ItemTemplate>
<asp:CheckBox ID="chkSelect" runat="server" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
<EmptyDataTemplate>
No Sales Orders Found.
</EmptyDataTemplate>
</asp:GridView>
答案 0 :(得分:1)
我会使用OnCommand
代替OnClick
,并使用CommandArgument
传递项目索引:
<asp:TemplateField>
<ItemTemplate>
<asp:LinkButton ID="LinkButton1" runat="server" Text="Click" CommandArgument='<%# Container.ItemIndex %>' OnCommand="LinkButton1_Command" ... />
</ItemTemplate>
</asp:TemplateField>
代码隐藏:
protected void LinkButton1_Command(object sender, CommandEventArgs e)
{
CheckBox chk = GridView1.Rows[(int)e.CommandArgument].FindControl("CheckBox1") as CheckBox;
if (chk != null)
chk.Checked = true;
}
答案 1 :(得分:0)
在Grid_RowDataBound()
事件处理程序中,您可以在按钮上附加客户端onClick事件以选中复选框。
在该方法中,您可以访问网格中的按钮以及chkSelect
复选框的ClientID。您可以对此进行硬编码或将参数传递给JS函数。
lnkOrderNumber.OnClientClick = "CheckOnlyOne('"+chkSelect.ClientID+"');";
然后JS:
function CheckOnlyOne(checkboxID)
{
// TODO: uncheck all checkboxes
document.getElementById(checkboxID).checked = true;
}