如何获取CheckBoxList中的value值

本文介绍了一种使用ASP.NET构建的项目状态选择器,包括项目前期、进行中、中期、后期、结束和意外中止等状态,通过列表项和输入框实现状态展示与值获取,提供检查所有状态的功能,方便用户查看和操作项目状态。
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

using System.Collections.Generic;

public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        List<string[]> metadata = new List<string[]>();

        metadata.Add(new string[] { "项目前期", "505004"});
        metadata.Add(new string[] { "项目进行中", "505001" });
        metadata.Add(new string[] { "项目中期", "505003" });
        metadata.Add(new string[] { "项目后期", "505005" });
        metadata.Add(new string[] { "项目结束", "505002" });
        metadata.Add(new string[] { "项目意外中止", "505006" });


        ListItem lt;

        for (int i = 0; i < metadata.Count; i++)
        {
            lt = new ListItem(metadata[i][0], metadata[i][1]);
            lt.Attributes["text"] = metadata[i][0];
            lt.Attributes["value1"] = metadata[i][1];
            this.CheckBoxList1.Items.Add(lt);
        }
    }
}





HTML code
<%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>无标题页</title>
    <script language="javascript" type="text/javascript">
    function checkAll()
    {
        var ckelems = document.getElementById("CheckBoxList1").getElementsByTagName("input");
        var spelems = document.getElementById("CheckBoxList1").getElementsByTagName("span");
        for(var i=0;i<ckelems.length;i++)
        {
            if(ckelems[i].type=="checkbox")
            {
                if(ckelems[i].checked)
                    alert('文本是 '+spelems[i].text+' 值是 '+spelems[i].value1);   
            }
        }
    }
    </script>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:CheckBoxList ID="CheckBoxList1" runat="server" Height="261px" Width="301px">
        </asp:CheckBoxList>
        <input id="Button1" type="button" value="button"  onclick="checkAll()"/></div>
    </form>
</body>
</html>


在 Android 中获取多个 CheckBox 有多种方法,以下为你详细介绍: ### 1. 直接在布局中获取多个 CheckBox 若布局中的 CheckBox 数量较少且固定,可直接在代码中通过 `findViewById` 方法获取每个 CheckBox 的引用,再判断其是否被选中,进而获取文本内容。示例代码如下: ```java import android.os.Bundle; import android.widget.CheckBox; import android.widget.Toast; import androidx.appcompat.app.AppCompatActivity; import java.util.ArrayList; import java.util.List; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); CheckBox checkBox1 = findViewById(R.id.checkBox1); CheckBox checkBox2 = findViewById(R.id.checkBox2); CheckBox checkBox3 = findViewById(R.id.checkBox3); List<String> selectedValues = new ArrayList<>(); if (checkBox1.isChecked()) { selectedValues.add(checkBox1.getText().toString()); } if (checkBox2.isChecked()) { selectedValues.add(checkBox2.getText().toString()); } if (checkBox3.isChecked()) { selectedValues.add(checkBox3.getText().toString()); } // 输出选中的 StringBuilder result = new StringBuilder(); for (String value : selectedValues) { result.append(value).append("\n"); } Toast.makeText(this, result.toString(), Toast.LENGTH_SHORT).show(); } } ``` 上述代码中,首先通过 `findViewById` 方法获取每个 CheckBox 的引用,接着判断每个 CheckBox 是否被选中,若被选中则将其文本内容添加到 `selectedValues` 列表中,最后将选中的通过 `Toast` 显示出来。 ### 2. 在 ListView 中获取多个 CheckBox 当使用 ListView 展示多个 CheckBox 时,可通过自定义 Adapter 来处理 CheckBox 的选中状态。示例代码如下: ```java import android.content.Context; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.CheckBox; import android.widget.TextView; import java.util.ArrayList; import java.util.List; public class MyAdapter extends BaseAdapter { private Context context; private List<String> dataList; private List<Boolean> checkedList; public MyAdapter(Context context, List<String> dataList) { this.context = context; this.dataList = dataList; this.checkedList = new ArrayList<>(); for (int i = 0; i < dataList.size(); i++) { checkedList.add(false); } } @Override public int getCount() { return dataList.size(); } @Override public Object getItem(int position) { return dataList.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(final int position, View convertView, ViewGroup parent) { ViewHolder holder; if (convertView == null) { convertView = LayoutInflater.from(context).inflate(android.R.layout.simple_list_item_multiple_choice, parent, false); holder = new ViewHolder(); holder.checkBox = convertView.findViewById(android.R.id.text1); convertView.setTag(holder); } else { holder = (ViewHolder) convertView.getTag(); } holder.checkBox.setText(dataList.get(position)); holder.checkBox.setChecked(checkedList.get(position)); holder.checkBox.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { checkedList.set(position, ((CheckBox) v).isChecked()); } }); return convertView; } public List<String> getSelectedValues() { List<String> selectedValues = new ArrayList<>(); for (int i = 0; i < dataList.size(); i++) { if (checkedList.get(i)) { selectedValues.add(dataList.get(i)); } } return selectedValues; } private static class ViewHolder { CheckBox checkBox; } } ``` ```java import android.os.Bundle; import android.widget.ListView; import android.widget.Toast; import androidx.appcompat.app.AppCompatActivity; import java.util.ArrayList; import java.util.List; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); List<String> dataList = new ArrayList<>(); dataList.add("Item 1"); dataList.add("Item 2"); dataList.add("Item 3"); MyAdapter adapter = new MyAdapter(this, dataList); ListView listView = findViewById(R.id.listView); listView.setAdapter(adapter); // 获取中的 List<String> selectedValues = adapter.getSelectedValues(); StringBuilder result = new StringBuilder(); for (String value : selectedValues) { result.append(value).append("\n"); } Toast.makeText(this, result.toString(), Toast.LENGTH_SHORT).show(); } } ``` 上述代码中,首先创建了一个自定义的 `MyAdapter` 类,在该类中通过 `checkedList` 列表来记录每个 CheckBox 的选中状态。在 `getView` 方法中,为每个 CheckBox 设置点击事件,当 CheckBox 被点击时,更新 `checkedList` 列表中对应位置的选中状态。通过 `getSelectedValues` 方法可以获取所有被选中的 CheckBox 的文本内容。在 `MainActivity` 中,创建 `MyAdapter` 实例并设置给 `ListView`,最后调用 `adapter.getSelectedValues()` 方法获取中的并通过 `Toast` 显示出来。 ### 3. 在 RecyclerView 中获取多个 CheckBox 若使用 RecyclerView 展示多个 CheckBox,同样可通过自定义 Adapter 来处理 CheckBox 的选中状态。示例代码如下: ```java import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.CheckBox; import android.widget.TextView; import androidx.recyclerview.widget.RecyclerView; import java.util.ArrayList; import java.util.List; public class MyRecyclerViewAdapter extends RecyclerView.Adapter<MyRecyclerViewAdapter.MyViewHolder> { private List<String> dataList; private List<Boolean> checkedList; public MyRecyclerViewAdapter(List<String> dataList) { this.dataList = dataList; this.checkedList = new ArrayList<>(); for (int i = 0; i < dataList.size(); i++) { checkedList.add(false); } } @Override public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view = LayoutInflater.from(parent.getContext()).inflate(android.R.layout.simple_list_item_multiple_choice, parent, false); return new MyViewHolder(view); } @Override public void onBindViewHolder(MyViewHolder holder, final int position) { holder.checkBox.setText(dataList.get(position)); holder.checkBox.setChecked(checkedList.get(position)); holder.checkBox.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { checkedList.set(position, ((CheckBox) v).isChecked()); } }); } @Override public int getItemCount() { return dataList.size(); } public List<String> getSelectedValues() { List<String> selectedValues = new ArrayList<>(); for (int i = 0; i < dataList.size(); i++) { if (checkedList.get(i)) { selectedValues.add(dataList.get(i)); } } return selectedValues; } public static class MyViewHolder extends RecyclerView.ViewHolder { CheckBox checkBox; public MyViewHolder(View itemView) { super(itemView); checkBox = itemView.findViewById(android.R.id.text1); } } } ``` ```java import android.os.Bundle; import android.widget.Toast; import androidx.appcompat.app.AppCompatActivity; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; import java.util.ArrayList; import java.util.List; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); List<String> dataList = new ArrayList<>(); dataList.add("Item 1"); dataList.add("Item 2"); dataList.add("Item 3"); MyRecyclerViewAdapter adapter = new MyRecyclerViewAdapter(dataList); RecyclerView recyclerView = findViewById(R.id.recyclerView); recyclerView.setLayoutManager(new LinearLayoutManager(this)); recyclerView.setAdapter(adapter); // 获取中的 List<String> selectedValues = adapter.getSelectedValues(); StringBuilder result = new StringBuilder(); for (String value : selectedValues) { result.append(value).append("\n"); } Toast.makeText(this, result.toString(), Toast.LENGTH_SHORT).show(); } } ``` 上述代码中,创建了一个自定义的 `MyRecyclerViewAdapter` 类,在该类中通过 `checkedList` 列表来记录每个 CheckBox 的选中状态。在 `onBindViewHolder` 方法中,为每个 CheckBox 设置点击事件,当 CheckBox 被点击时,更新 `checkedList` 列表中对应位置的选中状态。通过 `getSelectedValues` 方法可以获取所有被选中的 CheckBox 的文本内容。在 `MainActivity` 中,创建 `MyRecyclerViewAdapter` 实例并设置给 `RecyclerView`,最后调用 `adapter.getSelectedValues()` 方法获取中的并通过 `Toast` 显示出来。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值