У меня есть сценарий, в котором я отображаю данные в Gridview
. Теперь я хочу, чтобы были две кнопки: Approve
и Reject
. Я хочу убедиться, что нужно установить хотя бы один флажок, прежде чем нажимать на один из buttons
.
Ниже мой HTML.
<asp:GridView ID="grdDisplayCMMData" runat="server" AutoGenerateColumns="false" Width="100%" ShowHeaderWhenEmpty="true" CssClass="heavyTable table" EmptyDataText="No records to display"
AllowPaging="true" PageSize="20" OnPageIndexChanging="grdDisplayCMMData_PageIndexChanging">
<Columns>
<asp:BoundField DataField="ID" HeaderText="Id" ItemStyle-Width="10%" />
<asp:BoundField DataField="SAP_ID" HeaderText="Sap Id" ItemStyle-Width="10%" />
<%--<asp:BoundField DataField="ID_OD" HeaderText="ID to OD" ItemStyle-Width="10%" />--%>
<asp:BoundField DataField="ID_OD_COUNTCHANGE" HeaderText="ID to OD Change" ItemStyle-Width="10%" />
<asp:BoundField DataField="ID_OD_CHANGEDDATE" HeaderText="ID to OD Change Date" ItemStyle-Width="10%" />
<asp:BoundField DataField="RRH_COUNTCHANGE" HeaderText="RRH Count Change" ItemStyle-Width="10%" />
<asp:BoundField DataField="RRH_CHANGEDDATE" HeaderText="RRH Count Change Date" ItemStyle-Width="10%" />
<asp:BoundField DataField="TENANCY_COUNTCHANGE" HeaderText="Tenancy Count Change" ItemStyle-Width="10%" />
<asp:BoundField DataField="TENANCY_CHANGEDDATE" HeaderText="Tenancy Changed Date" ItemStyle-Width="10%" />
<asp:BoundField DataField="STATUS" HeaderText="Current Status" ItemStyle-Width="20%" />
<asp:TemplateField HeaderText="Approve/Reject">
<ItemTemplate>
<asp:CheckBox ID="chkApprRejCMM" runat="server" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
<div class="text-center">
<asp:Button ID="btnApproveCMM" Text="Approve" runat="server" OnClick="btnApproveCMM_Click" CssClass="btn btn-primary" />
<asp:Button ID="btnRejectCMM" Text="Reject" runat="server" OnClick="btnRejectCMM_Click" CssClass="btn btn-primary" />
</div>
Также см. Мое событие OnClick
"Утвердить".
protected void btnApproveCMM_Click(object sender, EventArgs e)
{
try
{
IPColoFields ObjIPColoFields = new App_Code.IPColoFields();
List<IPColoBilling.App_Code.UMS.UMSGroupDetails> UMSGroupDetails = (List<IPColoBilling.App_Code.UMS.UMSGroupDetails>)Session["lstUMSGroupDetails"];
Session["lstUMSGroupDetails"] = UMSGroupDetails;
string strApprove = "";
foreach (GridViewRow gvrow in grdDisplayCMMData.Rows)
{
var checkbox = gvrow.FindControl("chkApprRejCMM") as CheckBox;
if (checkbox.Checked)
{
int Id = Convert.ToInt32(grdDisplayCMMData.Rows[gvrow.RowIndex].Cells[0].Text);
ObjIPColoFields.Unique_Id = Id;
ObjIPColoFields.UMS_GRP_BY_ID = intCurrentGrpId;
ObjIPColoFields.UMS_GRP_BY_NAME = strCurrentGrp;
ObjIPColoFields.UMS_GRP_TO_ID = UMSGroupDetails[1].GroupID;
ObjIPColoFields.UMS_GRP_TO_NAME = UMSGroupDetails[1].GroupName;
ObjIPColoFields.FCA_STATUS = "1";
ObjIPColoFields.LAST_UPDATED_BY = lblUserName.Text;
strApprove = CommonDB.Approve_IPCOLO_CMMLevel(ObjIPColoFields);
}
}
ScriptManager.RegisterStartupScript(this, this.GetType(), "alert", "alert('Record Approved successfully'); window.location ='IpColoDefault.aspx';", true);
BindCMMData();
}
catch (Exception ex)
{
string strErrorMsg = ex.Message.ToString() + " " + "StackTrace :" + ex.StackTrace.ToString();
CommonDB.WriteLog("ERROR:" + strErrorMsg, ConfigurationManager.AppSettings["IPCOLO_LOG"].ToString());
}
}
Я попробовал логику получения количества флажков, и если оно меньше, чем 0
, то выдает ошибку. Но в Checkbox нет такого свойства, как получать счет.
Пожалуйста, предложите другой способ
2 ответа
Вы можете сделать это с помощью CustomValidator.
<asp:CustomValidator ID="CustomValidator1" runat="server" ClientValidationFunction="countCheckBoxes"
ErrorMessage="Check at least one"></asp:CustomValidator>
А затем функция для проверки, установлены ли какие-либо флажки.
<script type="text/javascript">
function countCheckBoxes(oSrc, args) {
var cnt = $('<%# GridView1.ClientID %> input[type=checkbox]:checked').length;
args.IsValid = cnt > 0;
}
</script>
Вы можете выполнить следующие шаги.
- Добавьте случайное имя класса как "XYZ" в флажок
<asp:CheckBox ID="chkApprRejCMM" runat="server" Class="xyz" />
2. добавить событие OnClientClick к кнопке
> <asp:Button ID="btnApproveCMM" Text="Approve" runat="server"
> OnClick="btnApproveCMM_Click" CssClass="btn btn-primary" OnClientClick
> = "javascript:return CheckData(); " />
3. С помощью JQuery проверьте, установлен ли хотя бы один флажок, и верните false, если внутри функции CheckData не установлен флажок.
`
`if ($ ('input.xyz:checked').length> 0) {return false;} else return true;
`
`Если функция вернет false, обратной передачи не произойдет.
Похожие вопросы
Новые вопросы
c#
C # (произносится как «резкий») - это высокоуровневый, статически типизированный язык программирования с несколькими парадигмами, разработанный Microsoft. Код C # обычно нацелен на семейство инструментов и сред выполнения Microsoft .NET, включая, среди прочего, .NET Framework, .NET Core и Xamarin. Используйте этот тег для вопросов о коде, написанном на C # или в формальной спецификации C #.