2

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

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

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

是否可以为每个复选框分配一个自定义参数,所以我不必将它们的 ID 绑定到 sproc 参数值。

谢谢你。

ps static Dictionary<> 似乎是要走的路,但是我无法从这篇文章中获取示例以在 .net 2.0 中工作

4

3 回答 3

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>
于 2009-02-06T15:03:09.287 回答
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.
}

希望这将减少您必须在服务器端执行的工作量。

于 2009-02-06T13:55:01.950 回答
0

您可以从它继承并添加您需要的属性。

或者使用字典将控件 ID 映射到您的数据库 ID。

编辑:字典包含键/值对列表。控件的 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");
}
于 2009-02-06T07:28:15.617 回答