将值(或任何其他参数)分配给asp:复选框

时间:2009-02-06 07:20:48

标签: c# .net asp.net .net-2.0 checkbox

我很确定这是不可能的,但无论如何我会把它扔出去。

我在页面上有大约10个asp:checkbox控件,每次检查/取消选中任何一个时,我都需要更新数据库。

现在我将所有这些绑定到一个在CheckedChanged上触发的事件处理程序,然后我将发送者转发到Checkbox并获取ID,并将基于该ID的值分配给一个获取传递给存储过程的参数。

是否可以为每个复选框分配自定义参数,因此我不必将其ID绑定到sproc参数值。

谢谢。

P.S。静态字典<>似乎是要走的路,但是我无法从this post获得在.net 2.0中工作的示例

3 个答案:

答案 0 :(得分:3)

为什么不制作自己的自定义服务器复选框控件。

namespace CustomControls
{
    public class CustomCheckBox : CheckBox
    {
       string _myValue;
       public string MyValue
       {
           get { return _myValue; }
           set { _myValue = value; }
       }

       public CustomCheckBox()
       {
       }
    }
}

<%@ Register TagPrefix="MyControls" Namespace="CustomControls"%>
<MyControls:CustomCheckBox id="chkBox" runat="server" MyValue="value"></MyControls:CustomTextBox>

答案 1 :(得分:1)

尝试使用常规HTML复选框并将其作为数组/逗号分隔列表提交可能是一个想法:

<input type="checkbox" id="item-1" name="items[]" value="1" />
<label for="item1">Item 1</label>
....
<input type="checkbox" id="item-n" name="items[]" value="n" />
<label for="item1">Item n</label>

然后在服务器端,您可以执行以下操作:

string tmp = Request.Form["items[]"];
if (!string.IsNullOrEmpty(tmp)) {
    string [] items = tmp.Split(new char[]{','});
    // rest of processing, etc.
}

希望这会减少您在服务器方面的工作量。

答案 2 :(得分:0)

您可以从中继承并添加所需的属性。

或使用Dictionary将控件ID映射到数据库ID。

编辑: dictionary包含键/值对的列表。控件的ID可能是键,您想要的数据库相关的“自定义参数”(我不是100%确定您所说的内容,但字典可以存储它)可能是值。当你想获得价值时,你可以得到:

myDictionary[keyValue]

宣布赞:

Dictionary<string, string> myDictionary = new Dictionary<string, string>();

编辑2: 对于静态字典:

public static readonly IDictionary<string, string> myDictionary = new Dictionary<string, string>();

static ClassConstructor()
{
    myDictionary.Add("key1", "value1");
    myDictionary.Add("key2", "value2");
    myDictionary.Add("key3", "value3");
}