【发布时间】:2011-06-23 01:44:55
【问题描述】:
对此有很多问题,但我无法使用其中任何一个的答案来解决我的问题(经过多次尝试......)
我正在使用 vb.net 创建一个 asp.net Web 应用程序。我的页面上有一个 SqlDataSource 和一个 GridView。
我想更改由 Gridview 复选框表示的 DoNotMail 布尔值,如果复选框从 0(False,Will Mail)选中到 1(True,Won't Mail),则在数据库中自动更新这是我的代码用过的。
对于default.aspx.vb后面的代码我加了:
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
lastname.Focus()
If Page.IsPostBack Then
Response.Write("The DoNotMail value has been changed in the database for the selected field")
End If
End Sub
Public Sub checkbox1_CheckedChanged(ByVal sender As Object, ByVal e As EventArgs)
With Me.SqlDataSource1
Dim box As CheckBox = DirectCast(sender, CheckBox)
If box.Checked = True Then
donotmail.SelectedValue = 1
.ConnectionString = ConfigurationManager.AppSettings("AgentLeadsConnectionString").ToString
.UpdateCommand = "UPDATE MktDataLeads_scrubbed set donotmail=@donotmail"
Else
donotmail.SelectedValue = 0
.ConnectionString = ConfigurationManager.AppSettings("AgentLeadsConnectionString").ToString
.UpdateCommand = "UPDATE MktDataLeads_scrubbed set donotmail=@donotmail"
End If
End With
End Sub
对于我添加的default.aspx页面:
<asp:TemplateField HeaderText="DoNotMail" SortExpression="DoNotMail">
<ItemTemplate>
<asp:CheckBox ID="CheckBox1" runat="server" AutoPostBack="true" OnCheckedChanged="checkbox1_CheckedChanged" Checked='<%# Bind("DoNotMail") %>'
Enabled="true" />
</ItemTemplate>
<EditItemTemplate>
<asp:CheckBox ID="CheckBox1" runat="server" AutoPostBack="true" OnCheckedChanged="checkbox1_CheckedChanged" Checked='<%# Bind("DoNotMail") %>' />
</EditItemTemplate>
</asp:TemplateField>
1) 我很确定我的更新命令语法在默认代码隐藏部分中不正确。有谁知道正确的语法?
2) 我收到错误:当我在代码后面部分添加“Handles CheckBox1.CheckedChanged”时,CheckBox1 带有下划线并出现以下错误:“Handles 子句需要在包含类型或其基本类型之一中定义的 WithEvents 变量” .我该如何摆脱它?我只是删除了该行并在没有它的情况下运行了代码。
3) 单击复选框后,“所选字段的数据库中的 DoNotMail 值已更改”文本显示在页面顶部,但如果我重新运行搜索 donotmail=1,则不会显示记录up 因为它从未更新过新值。
我很困惑。任何人都可以帮忙吗?将不胜感激:)
感谢尼克的回复! UPDATE 语句不起作用 b/c 它没有 WHERE 子句。它将按原样更新整个表。表没有主键。以下是表格的列 FROM [AgentLeads].[dbo].[MktDtaLeads_Scrubbed] - [Last Name] ,[First Name] ,[Middle Name] ,[Suffix] ,[Address Line 1] ,[Address Line 2] ,[City] ,[ST] ,[ZipCode] ,[Email Address] ,[Phone Nbr] ,[Toll Free Nbr] ,[InsertDate] ,[SentDate] ,[DoNotMail]
其中 AgentLeads 是数据库,MktDtaLeads_Scrubbed 是表。如何指定行?所以我会说:
.UpdateCommand = "UPDATE MktDataLeads_scrubbed set donotmail=@donotmail" WHERE [last name]=@lastname.selectedrow AND [first name]=@firstname.selectedrow AND [Address Line 1]=@Address Line 1.selectedrow
当用户点击按钮时,是否可以在整个网格视图上进行双向同步,这样您就不必在每次更改行时都进行更新?因为用户可能会选中该框,然后选中另一个框,然后取消选中一个框,这将是很多更新...
【问题讨论】:
标签: sql vb.net gridview checkbox boolean