怎么判断复选框是否被选中

时间:2022-03-13 09:00:25
我用的是2005
TableRow tr = new TableRow();
 TableCell tasktc1 = new TableCell();
                CheckBox chk = new CheckBox();
                chk.Text = "测试记录编号:" + testRed["id"].ToString();
                tasktc1.Controls.Add(chk);
tr.Cells.Add(tasktc1);
testTab.Rows.Add(tr);
怎么判断这个复选框是否被选中!
谢谢各位~本人处在学习阶段!请大家帮帮忙

31 个解决方案

#1


顶顶````

#2


if(chk.Checked)选中
if(!chk.Checked)没选中

#3


晕~这个谁都知道~问题上怎么样找到这个chk

#4


为CheckBox设置ID=chkRow
if(((CheckBox)thisRow.findcotrols("chkRow")).checked)
{
}

#5


后台New出来的,返回去后,不能用变量来访问,可以用Request.Form["chk"]来得到它的选中状态,就是用Asp的方法....

#6


用findcotrols("checkid")

#7


这样我也试 了!会报错

#8


Request.Form["chk"]?能不能说具体点呢!

#9


给你写了个例子:

<asp:Table ID="testTab" runat="server"></asp:Table>
<asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" />


CheckBox chk;

protected void Page_Load(object sender, EventArgs e)
{
    TableRow tr = new TableRow();
    TableCell tasktc1 = new TableCell();
    chk = new CheckBox();
    chk.ID = "chk_12345678";
    chk.Text = "测试记录编号:" + "12345678";
    tasktc1.Controls.Add(chk);
    tr.Cells.Add(tasktc1);
    testTab.Rows.Add(tr);
    this.SmartNavigation = true;
}

protected void Button1_Click(object sender, EventArgs e)
{
    this.Button1.Text ="选择值:"+ chk.Checked.ToString();
}

#10


从“CheckBox chk;”那一行开始,是程序代码。

#11


?????????????????????
哪样儿试过了?findcontrols是肯定找不到的,new的时候指定一个name,然后用Request.Form来得到值,看是否有,如果有,就证明Checked,没Empty或者null就证明没Checked
这和ASP判断是否选中了一样的

#12


对于“chk.ID = "chk_12345678";”那一句,在这个程序中是可要可不要的,但是最好永远都写上id。写上明确的id,那么当chk在容器的相对位置改变的时候,仍然可以正确识别(UniqueID属性不变)。

chk变量应该写在外边,因为你再其它事件中需要共享嘛!这个不要再求助于FindControl函数这么浪费asp.net资源的东西。

注意在asp.net2.0种只有page_load执行完成才能取得chk的真实地客户端值,而在asp.net1.1中在“testTab.Rows.Add(tr);”执行完之后立刻可以得到。有不少网上的程序是用1.1版本的逻辑说成是2.0的例子程序,模仿那些你会写错程序逻辑。

#13


private void Seltestinfo()
    {
                   testRed = pr_DA.Seltestinfo()
            while (testRed.Read())
            {
                TableRow tr = new TableRow();
               
                TableCell tasktc1 = new TableCell();
                CheckBox chk = new CheckBox();
                chk.Text = "测试记录编号:" + testRed["id"].ToString();
                              tasktc1.Controls.Add(chk);

                             tr.Cells.Add(tasktc1);
                              testTab.Rows.Add(tr);
                testTab.Rows.Add(tr1);
                       }
        }这是我绑定数据的方法!
页面上有N 条记录!也是有N 个CheckBox 我现在的目的是~当选种某个CheckBox 的时候获得它的text!问题就是我不知道怎么去找到CheckBox 

#14


我的值 是从数据库里取出来的!假如有3条记录的话就有3个CheckBox

#15


为什么不用CheckBoxList?????这样绑定,访问全解决了,多方便
如果还有的东西,用DataAdapter,*解决,这样就可以用FindControl了

#16


我不知道这个循环要怎么样去写!郁闷死了~今天一定要把这个问题搞出来!请大家帮帮忙!

#17


CheckBoxList可以吗?怎么样做呢?

#18


为什么不用CheckBoxList?????这样绑定,访问全解决了,多方便
如果还有的东西,用DataAdapter,*解决,这样就可以用FindControl了
能把程序代码告诉我呢?

#19


呵呵...我现在没搞ASP.NET开发,身边这台电脑没有VS,所以,代码没有,不好意思
CheckBoxList或者CheckListBox,这是WebForm才有的,WinForm没有,就是一个控件,拖一个进去,然后在后台把SqlDataReader绑定上去,指定DataValueField和DataTextField就行了,和一般绑定差不多的
-----
可能有些名词有点错,你自己看看吧

#20


你有多个chk,可以使用集合变量保存它们(把CheckBox chk变为List<CheckBox> chks或者ArrayList chks等),然后在处理业务逻辑的事件中需要哪个CheckBox就从集合中拿哪个出来。

#21


不行的~我现在的问题就是那个鬼循环不知道写~我想要得到选种了的复选框的text~这样一定要写循环~5555555555

#22


给你改了一下代码例子:

Dictionary<string, CheckBox> chks = new Dictionary<string, CheckBox>();

protected void Page_Load(object sender, EventArgs e)
{
    TableRow tr;
    TableCell tasktc1;
    for (int i = 0; i < 5; i++)
    {
        tr = new TableRow();
        tasktc1 = new TableCell();
        CheckBox chk = new CheckBox();
        chk.ID = "chk_" + i.ToString();
        chk.Text = "测试记录 No. " + i.ToString();
        tasktc1.Controls.Add(chk);
        chks.Add(chk.ID, chk);
        tr.Cells.Add(tasktc1);
        testTab.Rows.Add(tr);
    }
    this.SmartNavigation = true;
}

protected void Button1_Click(object sender, EventArgs e)
{
    this.Button1.Text = "选择值 No.3:" + chks["chk_3"].Checked.ToString();
}

#23


我现在页面有3条记录!ID号前面分别有3个CheckBox!加入第1个和第3个CheckBox被选中。 当我点击按钮的时候!我怎么样获得这两个被选中CheckBox的text呢?

#24


如果你对Dictionary<S,C>不习惯,使用HashTable也是一样的。

#25


我在例子中是取出第3个CheckBox来。你照着再取第1个,或者循环chks集合访问每一个CheckBox,代码只要两三行不难的。

#26


我就是这个循环不会写~ 说找不到这个或者上是对象没有事例化

#27


晕哦...你没用过CheckListBox呀?自带了很多功能的,比如取得select的所有项,判断那些被checked了,设定那些被select或者checked,而且支持绑定,很方便的

#28


给定关键字不在字典中。这个是什么错误

#29


给定关键字不在字典中。这是个什么错误啊~

#30


using System;
using System.Data;
using System.Configuration;
using System.Collections;
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.Data.SqlClient;
using System.Collections.Generic;

public partial class WEB_UI_Hg_Pr_HgPr_testass : System.Web.UI.Page
{
    DataSet ds;
        SqlDataReader testRed;
    Dictionary<string, CheckBox> chks = new Dictionary<string, CheckBox>();

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            Seltestinfo();
           
        }
    
    }
        private void Seltestinfo()
    {
                    int i = 1;
            testRed = pr_DA.Seltestinfo();
            while (testRed.Read())
            {
                TableRow tr = new TableRow();
              
                TableCell tasktc1 = new TableCell();
                CheckBox chk = new CheckBox();
                chk.ID = i.ToString();
                chk.Text = "测试记录编号:" + testRed["id"].ToString();
                tasktc1.Controls.Add(chk);
            
                
                tr.Cells.Add(tasktc1);
                              testTab.Rows.Add(tr);
                                i++;
                this.SmartNavigation = true;
            
          
        }
            }

    
    protected void Button1_Click(object sender, EventArgs e)
    {
        Seltestinfo();
        for (int i = 1; i <= this.testTab.Rows.Count; i++)
        {
            if (chks[i.ToString()].Checked == true)
            {
                Button1.Text += chks[i.ToString()].Text;
            }
        }
    }
}
报的错误是"给定关键字不在字典中."请问这个错误要怎么解决!

#31


该回复于2008-12-19 14:14:54被版主删除

#1


顶顶````

#2


if(chk.Checked)选中
if(!chk.Checked)没选中

#3


晕~这个谁都知道~问题上怎么样找到这个chk

#4


为CheckBox设置ID=chkRow
if(((CheckBox)thisRow.findcotrols("chkRow")).checked)
{
}

#5


后台New出来的,返回去后,不能用变量来访问,可以用Request.Form["chk"]来得到它的选中状态,就是用Asp的方法....

#6


用findcotrols("checkid")

#7


这样我也试 了!会报错

#8


Request.Form["chk"]?能不能说具体点呢!

#9


给你写了个例子:

<asp:Table ID="testTab" runat="server"></asp:Table>
<asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" />


CheckBox chk;

protected void Page_Load(object sender, EventArgs e)
{
    TableRow tr = new TableRow();
    TableCell tasktc1 = new TableCell();
    chk = new CheckBox();
    chk.ID = "chk_12345678";
    chk.Text = "测试记录编号:" + "12345678";
    tasktc1.Controls.Add(chk);
    tr.Cells.Add(tasktc1);
    testTab.Rows.Add(tr);
    this.SmartNavigation = true;
}

protected void Button1_Click(object sender, EventArgs e)
{
    this.Button1.Text ="选择值:"+ chk.Checked.ToString();
}

#10


从“CheckBox chk;”那一行开始,是程序代码。

#11


?????????????????????
哪样儿试过了?findcontrols是肯定找不到的,new的时候指定一个name,然后用Request.Form来得到值,看是否有,如果有,就证明Checked,没Empty或者null就证明没Checked
这和ASP判断是否选中了一样的

#12


对于“chk.ID = "chk_12345678";”那一句,在这个程序中是可要可不要的,但是最好永远都写上id。写上明确的id,那么当chk在容器的相对位置改变的时候,仍然可以正确识别(UniqueID属性不变)。

chk变量应该写在外边,因为你再其它事件中需要共享嘛!这个不要再求助于FindControl函数这么浪费asp.net资源的东西。

注意在asp.net2.0种只有page_load执行完成才能取得chk的真实地客户端值,而在asp.net1.1中在“testTab.Rows.Add(tr);”执行完之后立刻可以得到。有不少网上的程序是用1.1版本的逻辑说成是2.0的例子程序,模仿那些你会写错程序逻辑。

#13


private void Seltestinfo()
    {
                   testRed = pr_DA.Seltestinfo()
            while (testRed.Read())
            {
                TableRow tr = new TableRow();
               
                TableCell tasktc1 = new TableCell();
                CheckBox chk = new CheckBox();
                chk.Text = "测试记录编号:" + testRed["id"].ToString();
                              tasktc1.Controls.Add(chk);

                             tr.Cells.Add(tasktc1);
                              testTab.Rows.Add(tr);
                testTab.Rows.Add(tr1);
                       }
        }这是我绑定数据的方法!
页面上有N 条记录!也是有N 个CheckBox 我现在的目的是~当选种某个CheckBox 的时候获得它的text!问题就是我不知道怎么去找到CheckBox 

#14


我的值 是从数据库里取出来的!假如有3条记录的话就有3个CheckBox

#15


为什么不用CheckBoxList?????这样绑定,访问全解决了,多方便
如果还有的东西,用DataAdapter,*解决,这样就可以用FindControl了

#16


我不知道这个循环要怎么样去写!郁闷死了~今天一定要把这个问题搞出来!请大家帮帮忙!

#17


CheckBoxList可以吗?怎么样做呢?

#18


为什么不用CheckBoxList?????这样绑定,访问全解决了,多方便
如果还有的东西,用DataAdapter,*解决,这样就可以用FindControl了
能把程序代码告诉我呢?

#19


呵呵...我现在没搞ASP.NET开发,身边这台电脑没有VS,所以,代码没有,不好意思
CheckBoxList或者CheckListBox,这是WebForm才有的,WinForm没有,就是一个控件,拖一个进去,然后在后台把SqlDataReader绑定上去,指定DataValueField和DataTextField就行了,和一般绑定差不多的
-----
可能有些名词有点错,你自己看看吧

#20


你有多个chk,可以使用集合变量保存它们(把CheckBox chk变为List<CheckBox> chks或者ArrayList chks等),然后在处理业务逻辑的事件中需要哪个CheckBox就从集合中拿哪个出来。

#21


不行的~我现在的问题就是那个鬼循环不知道写~我想要得到选种了的复选框的text~这样一定要写循环~5555555555

#22


给你改了一下代码例子:

Dictionary<string, CheckBox> chks = new Dictionary<string, CheckBox>();

protected void Page_Load(object sender, EventArgs e)
{
    TableRow tr;
    TableCell tasktc1;
    for (int i = 0; i < 5; i++)
    {
        tr = new TableRow();
        tasktc1 = new TableCell();
        CheckBox chk = new CheckBox();
        chk.ID = "chk_" + i.ToString();
        chk.Text = "测试记录 No. " + i.ToString();
        tasktc1.Controls.Add(chk);
        chks.Add(chk.ID, chk);
        tr.Cells.Add(tasktc1);
        testTab.Rows.Add(tr);
    }
    this.SmartNavigation = true;
}

protected void Button1_Click(object sender, EventArgs e)
{
    this.Button1.Text = "选择值 No.3:" + chks["chk_3"].Checked.ToString();
}

#23


我现在页面有3条记录!ID号前面分别有3个CheckBox!加入第1个和第3个CheckBox被选中。 当我点击按钮的时候!我怎么样获得这两个被选中CheckBox的text呢?

#24


如果你对Dictionary<S,C>不习惯,使用HashTable也是一样的。

#25


我在例子中是取出第3个CheckBox来。你照着再取第1个,或者循环chks集合访问每一个CheckBox,代码只要两三行不难的。

#26


我就是这个循环不会写~ 说找不到这个或者上是对象没有事例化

#27


晕哦...你没用过CheckListBox呀?自带了很多功能的,比如取得select的所有项,判断那些被checked了,设定那些被select或者checked,而且支持绑定,很方便的

#28


给定关键字不在字典中。这个是什么错误

#29


给定关键字不在字典中。这是个什么错误啊~

#30


using System;
using System.Data;
using System.Configuration;
using System.Collections;
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.Data.SqlClient;
using System.Collections.Generic;

public partial class WEB_UI_Hg_Pr_HgPr_testass : System.Web.UI.Page
{
    DataSet ds;
        SqlDataReader testRed;
    Dictionary<string, CheckBox> chks = new Dictionary<string, CheckBox>();

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            Seltestinfo();
           
        }
    
    }
        private void Seltestinfo()
    {
                    int i = 1;
            testRed = pr_DA.Seltestinfo();
            while (testRed.Read())
            {
                TableRow tr = new TableRow();
              
                TableCell tasktc1 = new TableCell();
                CheckBox chk = new CheckBox();
                chk.ID = i.ToString();
                chk.Text = "测试记录编号:" + testRed["id"].ToString();
                tasktc1.Controls.Add(chk);
            
                
                tr.Cells.Add(tasktc1);
                              testTab.Rows.Add(tr);
                                i++;
                this.SmartNavigation = true;
            
          
        }
            }

    
    protected void Button1_Click(object sender, EventArgs e)
    {
        Seltestinfo();
        for (int i = 1; i <= this.testTab.Rows.Count; i++)
        {
            if (chks[i.ToString()].Checked == true)
            {
                Button1.Text += chks[i.ToString()].Text;
            }
        }
    }
}
报的错误是"给定关键字不在字典中."请问这个错误要怎么解决!

#31


该回复于2008-12-19 14:14:54被版主删除