[研究][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
(完)
沒有留言:
張貼留言