是否有可能DataBind ASP.NET CheckBoxList,以便数据中的字符串值成为复选框的标签,bool值检查/取消选中该框?
在我的asp.net webform上,我有一个像这样的CheckBoxList:
<asp:CheckBoxList runat="server" ID="chkListRoles" DataTextField="UserName" DataValueField="InRole" />
Run Code Online (Sandbox Code Playgroud)
在后面的代码我有这个代码:
var usersInRole = new List<UserInRole>
{
new UserInRole { UserName = "Frank", InRole = false},
new UserInRole{UserName = "Linda", InRole = true},
new UserInRole{UserName = "James", InRole = true},
};
chkListRoles.DataSource = usersInRole;
chkListRoles.DataBind();
Run Code Online (Sandbox Code Playgroud)
我有点希望在InRole = true时检查复选框.我也试过InRole ="Checked".结果是一样的.我似乎无法找到DataBind的方法,并自动选中/取消选中复选框.
目前,我通过为DataBound事件中的相应项设置selected = true来解决问题.似乎有一个更清晰的解决方案,超出我的掌握.
谢谢
我正在VS2008中开发Word 2007 VSTO应用程序.与VSTO交互的应用程序部分很难测试.VSTO对象的行为与大多数类库不同.它们的状态和行为取决于用户如何与Word交互,他们点击的位置,插入点周围的内容等等.模拟对象可以在某些情况下工作,但它们不能捕获VSTO对象的许多细微之处.
任何人都有测试他们可以共享的基于VSTO的应用程序的经验吗?
当我运行下面的代码时,输出是"DelegateDisplayIt",通常重复1-4次.我运行这段代码的次数大概是100次,而且输出的次数一直都不是"ParameterizedDisplayIt".因此,似乎创建并随后启动线程的方式会影响参数的传递方式.使用匿名委托创建新线程时,该参数是对原始变量的引用,但是当使用ParameterizedThreadStart委托创建时,该参数是一个全新的对象?我的假设是否正确?如果是这样,这似乎是线程构造函数的一个奇怪的副作用,不是吗?
static void Main()
{
for (int i = 0; i < 10; i++)
{
bool flag = false;
new Thread(delegate() { DelegateDisplayIt(flag); }).Start();
var parameterizedThread = new Thread(ParameterizedDisplayIt);
parameterizedThread.Start(flag);
flag = true;
}
Console.ReadKey();
}
private static void DelegateDisplayIt(object flag)
{
if ((bool)flag)
Console.WriteLine("DelegateDisplayIt");
}
private static void ParameterizedDisplayIt(object flag)
{
if ((bool)flag)
Console.WriteLine("ParameterizedDisplayIt");
}
Run Code Online (Sandbox Code Playgroud)