如果选中复选框,则传递值

时间:2011-05-23 03:46:34

标签: c# checkbox

我有一个表单,其中包含一些文本框(45),每个文本框旁边都有CheckBoxes,还有一个按钮。按下按钮时,我想将具有已检查CheckBox的每个Textbox的值传递给另一个类中的void,而未检查的那些则传递空值。

目前我所拥有的是: 的 Form1中

private void button_Click(object sender, EventArgs e)
{
String Value1;
if (value1CheckBox.Checked)
{
    Value1 = value1TextBox.Text;
}
else
{
    Value1 = null;
}

String Value2;
if (value2CheckBox.Checked)
{
    Value2 = value1TextBox.Text;
}
else
{
    Value2 = null;
}

etc...

Form2 form2 = new Form2();
form2.insertSQL(Value1, Value2, etc...);
}

窗体2

private void insertSQL(String Value1, String Value2, String etc...)
{
    /*
    Code to insert to SQL database
    */
}

但是接缝非常低效,我确信如果选中这些框,必须有更好的方法来传递值。任何有关更好的方法的建议都会受到赞赏,如果我使用了错误的术语,我也很抱歉。我很擅长编程。

2 个答案:

答案 0 :(得分:1)

一个好主意是将所有复选框和文本框存储到字典中。您需要创建的特定字典是:

Dictionary checkToText = new Dictionary();

然后,将每个CheckBox / TextBox对映射到字典中。

最后,在button_Clicked方法中,创建一个循环遍历字典中每个键/值对的循环:

foreach (KeyValuePair<CheckBox, TextBox> pair in checkToText)
{
//do what you need to do
//pair.Key for checkbox
//pair.Value for textbox
}

答案 1 :(得分:0)

我认为您遇到的限制是未经检查的复选框不会作为表单帖子的一部分传递。

你可以组装一个javascript,onclick,将汇编一些JSON并将其放入一个隐藏值,然后从隐藏值(在你的服务器代码中)反序列化JSON。这将允许您为文本框设置null,而不必遍历服务器端的表单字段。

可维护性将成为您决定是将其用于服务器端还是在客户端执行的驱动因素,就像我所描述的那样。

另外,不要忘记在创建SQL之前清理数据(如服务器端函数名所示)。你不能相信这些数据!