65.9K
CodeProject 正在变化。 阅读更多。
Home

.NET 使用 XML 的投票

starIcon
emptyStarIcon
starIcon
emptyStarIconemptyStarIconemptyStarIcon

1.67/5 (2投票s)

2008 年 3 月 2 日

CPOL

2分钟阅读

viewsIcon

33329

downloadIcon

425

可定制的 .NET 投票控件。

引言

这是一个用于在网站上进行用户投票的简单用户控件。该控件由 XML 文件驱动。 许多可用投票控件中常用的 SQL Server 和 Flash 并非必需。 但是,代码可以修改为从任何数据源获取数据。 该控件有一些控制显示的属性(颜色、字体等)。

要求

.NET Framework 2.0 和 AJAX 扩展 1.0。

该控件使用 System.IO 从 XML 文件中读取和写入。 因此,.NET 进程需要对应用程序目录具有读/写权限。 要确定需要具有权限的 .NET 用户,请下载此 zip 文件 (0.2 KB),将文件 identity.aspx 复制到应用程序文件夹中,并浏览到该文件。 这将显示当前的 .NET 用户。 要设置应用程序文件夹的读/写权限(XP Professional),请右键单击该文件夹,选择“属性”|“安全”,单击“添加”,在对象名称下输入 .NET 用户,然后单击“检查名称”。 找到用户后,单击“确定”。 在用户的“权限”下,确保除了“读取”和“执行”之外,还选中了“修改/写入”。

使用代码

该控件包含几个标签。 lblTitle 显示投票/调查问题。 如果以前从计算机提交了条目,lblWarning 会显示警告。 可以根据布尔属性 DisplayWarning 显示或隐藏警告消息。 投票选项显示在 RadioButtonList 中。 PlaceHolder 控件根据 XML 文件中指定的选项数量动态加载标签。 RadioButtonListPlaceHolder 放置在 UpdatePanel 中,以防止页面在回发时刷新。

在加载时,该控件检查用户的计算机上是否存在 cookie。(设置 cookie 的方法 SetCookie 在源代码中被注释掉了。 如果您只想允许来自一台计算机的一个条目,请取消注释它。)如果存在,则会显示图形以及可选的警告消息。 唯一的必需属性是 Key,即 XML 文件名。 投票/调查问题在属性 Title 中设置。 控件的宽度可以在 Width 属性中指定。 Column1WidthColumn2Width 指定显示选项和图形的两个表格单元格的宽度。

下面显示了一个示例 XML 文件

<?xml version="1.0" standalone="yes"?>
<poll>
 <choice>
  <option>Every Day</option>
  <count>2</count>
 </choice>
 <choice>
  <option>Once a Week</option>
  <count>6</count>
 </choice>
 <choice>
  <option>Once a Month</option>
  <count>4</count>
 </choice>
 <choice>
  <option>Rarely</option>
  <count>2</count>
 </choice>
</poll>

这是该控件的屏幕截图

control.JPG

这是该控件显示的图形的屏幕截图

每个选项的计数都保存在 RadioButtonList 项目的 Value 属性中。 在使用 ListItemValue 属性时,我遇到了一个之前没有注意到的奇怪行为。 如果多个 ListItem 具有相同的值,则 SelectedIndex 将返回这些公共项目的最低索引。 我必须使用行标识符来维护值才能解决此问题。 我不知道这是否是解决此问题的简单方法。

© . All rights reserved.