【发布时间】:2013-04-25 14:37:10
【问题描述】:
ASP.Net asp:ControlParameter ControlID 可以是公共共享变量而不是 ASP:label 吗?
我们使用 asp:label 作为 DataSource 的参数,但现在想使用公共共享变量而不是标签。
这是使用 asp:label 的参数标记。
<asp:ControlParameter
ControlID="LabelCheckBoxMonday"
Name="DayOfWeekMonday"
PropertyName="Text"
Type="String" />
我们在代码隐藏中添加了这个公共共享变量。
Public Shared blnDayOfWeekMonday As Boolean
我们将参数的标记更改为此。
<asp:ControlParameter
ControlID="blnDayOfWeekMonday"
Name="DayOfWeekMonday"
PropertyName="Text"
Type="String" />
这是将值放入变量的编码。用于为标签执行此操作的原始编码已被注释掉。
Protected Sub ImageButtonInsertDayOfWeekMonday_Click(sender As Object, e As ImageClickEventArgs)
Dim imgTheImageButton As New ImageButton
imgTheImageButton = DetailsView.FindControl("ImageButtonInsertDayOfWeekMonday")
If imgTheImageButton.ImageUrl = "../../Images/checked.png" = True Then
imgTheImageButton.ImageUrl = "../../Images/unchecked.png"
' LabelCheckBoxMonday.Text = False
blnDayOfWeekMonday = False
Else
imgTheImageButton.ImageUrl = "../../Images/checked.png"
' LabelCheckBoxMonday.Text = True
blnDayOfWeekMonday = True
End If
End Sub
所有这些都是以下 InsertCommand 的一部分:
InsertCommand=
"INSERT INTO [TeacherSchedule]
([DayOfWeekMonday],
[DayOfWeekTuesday],
[DayOfWeekWednesday],
[DayOfWeekThursday],
[DayOfWeekFriday],
[DayOfWeekSaturday],
[DayOfWeekSunday],
[StartTime],
[EndTime],
[ClassID],
[TeacherID])
VALUES (@DayOfWeekMonday,
@DayOfWeekTuesday,
@DayOfWeekWednesday,
@DayOfWeekThursday,
@DayOfWeekFriday,
@DayOfWeekSaturday,
@DayOfWeekSunday,
@StartTime,
@EndTime,
@ClassID,
@TeacherID)"
当 Web 表单运行时,将其更改为公共共享变量后没有任何反应。
你能告诉我我还需要做什么才能继续吗?
* 更新 *
使用 Marks 的建议,我发现了如何做一个 asp:QueryStringParameter 但仍然不知道如何用一个值填充它。这是作为 asp 的参数:QueryStringParameter
<asp:QueryStringParameter
Name="DayOfWeekMonday"
QueryStringField="QSDayOfWeekMonday" />
如何在 ImageButtonInsertDayOfWeekMonday_Click 子例程中填充 QSDayOfWeekMonday?
我试过了:
QSDayOfWeekMonday = False
但出现“未声明”错误。
* 完整标记和代码隐藏编码 *
【问题讨论】:
-
blnDayOfWeekMonday 不是控件,因此您不能使用 ControlID。老实说,这两种方式都非常糟糕。为什么不使用查询字符串参数?
-
感谢马克的回复。您能否向我们展示如何使用查询字符串参数以及所需的标记和代码隐藏编码将 true 或 false 存储到 @DayOfWeekMonday 中?我还包括了 InsertCommand,所以你知道我们要做什么。
-
感谢 pastebin 示例。 DayOfWeekMonday 作为一个静态的,意味着每个人都将共享相同的值。我不认为那是你想要的。另外,我相信 DefaultValue 是一个字符串,所以你需要确保它是一个字符串值。
标签: asp.net vb.net controlparameter