[研究][ASP.NET] 檢查相同 GroupName 的 RadioButton 是否選了 (必選檢查)
2021-01-15
Visual Studio 2019 + ASP.NET + WebForm + C#
Default.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="WebApplication14.Default" %> <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <title></title> </head> <body> <form id="form1" runat="server"> <div> <asp:RadioButton ID="RadioButton1" GroupName="RadioButtonGroup1" runat="server" Text="AAA" /><br /> <asp:RadioButton ID="RadioButton2" GroupName="RadioButtonGroup1" runat="server" Text="BBB" /><br /> <asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" /><br /> <asp:Label ID="Label1" runat="server"></asp:Label> </div> </form> </body> </html> |
Default.aspx.cs
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; namespace WebApplication14 { public partial class Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { } protected void Button1_Click(object sender, EventArgs e) { string errMsg = "RadioButtonGroup1 群的 RadionButton 必選"; Label1.Text = ""; // 方法1 // 判斷 GroupName 相同為 RadioButtonGroup1 的全部 RadioButton 是否選了一個,或沒選 bool radioButtonRequired = CheckRadioButtonRequired(form1.Controls, "RadioButtonGroup1"); if (radioButtonRequired == false) { Page.ClientScript.RegisterStartupScript(Page.GetType(), "message", "<script language='javascript' defer>alert('" + errMsg + "');</script>"); } // 方法2 // 判斷 GroupName 相同為 RadioButtonGroup1 選了甚麼內容 string radioButtonSelectedValue = GetRadioValue(form1.Controls, "RadioButtonGroup1"); Label1.Text = radioButtonSelectedValue; if (radioButtonSelectedValue=="") { Page.ClientScript.RegisterStartupScript(Page.GetType(), "message", "<script language='javascript' defer>alert('" + errMsg + "');</script>"); } } public bool CheckRadioButtonRequired(ControlCollection controls, string groupName) { // 找出被選的 RadioButton var selectedRadioButton = controls.OfType<RadioButton>().FirstOrDefault(rb => rb.GroupName == groupName && rb.Checked); // 如果沒找到 (null),回傳 false,否則回傳 true return selectedRadioButton == null ? false : true; } public string GetRadioValue(ControlCollection controls, string groupName) { var selectedRadioButton = controls.OfType<RadioButton>().FirstOrDefault(rb => rb.GroupName == groupName && rb.Checked); return selectedRadioButton == null ? string.Empty : selectedRadioButton.Text; //trinary operator (shortcut of an if expresison) } } } |
注意:其時本來是想拿來檢查 FormView 中大量不同 GroupName 群的 RadioButton 是否都選了一個 (必選檢查),但 FormView1 的 EditItemTemplate 中的 控制項 (Control) 不是直接在 FormView1.Controls 中,而是在 FormView1 的 Control 中的 Control 中的 Control 中的 Control,好幾層,直接用 FormView1.Controls 抓不到。
bool radioButtonRequired = CheckRadioButtonRequired(FormView1.Controls, "RadioButtonGroup1"); |
可能要想辦法搭配下面這篇的 CheckAllTextBoxeLength(Control parent) 進行。
[研究][ASP.NET]檢查FormView1中上百個TextBox輸入資料長度http://shaurong.blogspot.com/2021/01/aspnetformview1textbox.html
(完)
沒有留言:
張貼留言