说明:我用的数据源是Access数据源控件,而后我又在Gridview控件中加入ButtonField字段加入按钮,为了更新Gridview控件中的时间字段,而这个时间是当前的日期时间,没有涉及到编辑。在应用中,更新别的字段好用,而更新时间不起做用,也不提示错误,不知为什么:
代码如下:
后台的:
Protected Sub GridView2_RowCommand(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewCommandEventArgs) Handles GridView2.RowCommand
If e.CommandName = "Update" Then
Dim cn As New OleDbConnection(yjClass.DbPath1)
Dim str As String = "Update info set fbTime=@d where id=" & e.CommandArgument.ToString
Dim cmd As New OleDbCommand(str, cn)
cmd.Parameters.Add("@d", OleDbType.Date)
cmd.Parameters("@d").Value = Date.Now
Try
cn.Open()
cmd.ExecuteNonQuery()
Finally
cn.Close()
End Try
End If
End Sube.CommandArgument.ToString 是按钮绑定的Id字段。
前台代码:<asp:GridView ID="GridView2" runat="server" AutoGenerateColumns="False"
DataKeyNames="Id" DataSourceID="AccessDataSource1" Width="580px" BorderStyle="None" BorderWidth="0px" CellPadding="4" CellSpacing="2" >
<Columns>
<asp:TemplateField></asp:TemplateField>
<asp:BoundField DataField="Id" HeaderText="Id" InsertVisible="False" ReadOnly="True"
SortExpression="Id" />
<asp:TemplateField HeaderText="信息标题">
<ItemTemplate>
<asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl='<%# Eval("id", "DisplayInfo.aspx?infoid={0}") %>'
Text='<%# Eval("infobt") %>'></asp:HyperLink>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="发布时间">
<EditItemTemplate>
<asp:TextBox ID="TextBox1" runat="server" Text='<%# Bind("fbtime") %>'></asp:TextBox>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="Label1" runat="server" Text='<%# Bind("fbtime") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="FbMan" SortExpression="FbMan" Visible="False" />
<asp:TemplateField HeaderText="更新" ShowHeader="False">
<ItemTemplate>
<asp:LinkButton ID="LinkButton3" runat="server" CausesValidation="False" CommandArgument='<%# Eval("id") %>'
CommandName="Update" Text="更新" ></asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>
<asp:CommandField ShowDeleteButton="True" />
</Columns>
<HeaderStyle BackColor="#FFC0C0" />
<EmptyDataTemplate>
<asp:Label ID="Label3" runat="server" Font-Size="12px" ForeColor="#FF8080" Text="您还没有信息发布!!"></asp:Label>
</EmptyDataTemplate>
</asp:GridView>
<asp:AccessDataSource ID="AccessDataSource1" runat="server" DataFile="~/App_Data/#yjData%.mdb"
SelectCommand="SELECT [Id],[fbTime], [infoBt], [FbMan] FROM [info] WHERE ([FbMan] = ?)" DeleteCommand="DELETE FROM [info] WHERE [Id] = ?" UpdateCommand="UPDATE [info] SET [fbTime] = ? WHERE [Id] = ?">
<SelectParameters>
<asp:CookieParameter CookieName="yj_userid" Name="FbMan" Type="String" />
</SelectParameters>
<DeleteParameters>
<asp:Parameter Name="Id" Type="Int32" />
</DeleteParameters>
</asp:AccessDataSource> 请高手指点!!在线等
代码如下:
后台的:
Protected Sub GridView2_RowCommand(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewCommandEventArgs) Handles GridView2.RowCommand
If e.CommandName = "Update" Then
Dim cn As New OleDbConnection(yjClass.DbPath1)
Dim str As String = "Update info set fbTime=@d where id=" & e.CommandArgument.ToString
Dim cmd As New OleDbCommand(str, cn)
cmd.Parameters.Add("@d", OleDbType.Date)
cmd.Parameters("@d").Value = Date.Now
Try
cn.Open()
cmd.ExecuteNonQuery()
Finally
cn.Close()
End Try
End If
End Sube.CommandArgument.ToString 是按钮绑定的Id字段。
前台代码:<asp:GridView ID="GridView2" runat="server" AutoGenerateColumns="False"
DataKeyNames="Id" DataSourceID="AccessDataSource1" Width="580px" BorderStyle="None" BorderWidth="0px" CellPadding="4" CellSpacing="2" >
<Columns>
<asp:TemplateField></asp:TemplateField>
<asp:BoundField DataField="Id" HeaderText="Id" InsertVisible="False" ReadOnly="True"
SortExpression="Id" />
<asp:TemplateField HeaderText="信息标题">
<ItemTemplate>
<asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl='<%# Eval("id", "DisplayInfo.aspx?infoid={0}") %>'
Text='<%# Eval("infobt") %>'></asp:HyperLink>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="发布时间">
<EditItemTemplate>
<asp:TextBox ID="TextBox1" runat="server" Text='<%# Bind("fbtime") %>'></asp:TextBox>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="Label1" runat="server" Text='<%# Bind("fbtime") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="FbMan" SortExpression="FbMan" Visible="False" />
<asp:TemplateField HeaderText="更新" ShowHeader="False">
<ItemTemplate>
<asp:LinkButton ID="LinkButton3" runat="server" CausesValidation="False" CommandArgument='<%# Eval("id") %>'
CommandName="Update" Text="更新" ></asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>
<asp:CommandField ShowDeleteButton="True" />
</Columns>
<HeaderStyle BackColor="#FFC0C0" />
<EmptyDataTemplate>
<asp:Label ID="Label3" runat="server" Font-Size="12px" ForeColor="#FF8080" Text="您还没有信息发布!!"></asp:Label>
</EmptyDataTemplate>
</asp:GridView>
<asp:AccessDataSource ID="AccessDataSource1" runat="server" DataFile="~/App_Data/#yjData%.mdb"
SelectCommand="SELECT [Id],[fbTime], [infoBt], [FbMan] FROM [info] WHERE ([FbMan] = ?)" DeleteCommand="DELETE FROM [info] WHERE [Id] = ?" UpdateCommand="UPDATE [info] SET [fbTime] = ? WHERE [Id] = ?">
<SelectParameters>
<asp:CookieParameter CookieName="yj_userid" Name="FbMan" Type="String" />
</SelectParameters>
<DeleteParameters>
<asp:Parameter Name="Id" Type="Int32" />
</DeleteParameters>
</asp:AccessDataSource> 请高手指点!!在线等
' OleDb 不支持命名参数,请使用占位符 ?
Dim cn As New OleDbConnection(yjClass.DbPath1)
Dim str As String = "Update info set fbTime=@d where id=" & e.CommandArgument.ToString
Dim cmd As New OleDbCommand(str, cn)
cmd.Parameters.Add("@d", OleDbType.Date)
cmd.Parameters("@d").Value = Date.Now
Try
cn.Open()
cmd.ExecuteNonQuery()
Finally
cn.Close()
这个是我加按钮后运行的代码
应该改成
Dim str As String = "Update info set fbTime=@d where id='" & e.CommandArgument & "'"如果是整数类型
Dim str As String = "Update info set fbTime=@d where id=" & e.CommandArgument.ToString
应该改成
Dim str As String = "Update info set fbTime=@d where id=" & Convert.ToInt32(e.CommandArgument)
我改过字符串试不行的,
如果我把,fbtime=@d 改成, 别的字段加参数按钮就起作
而发布时间fbtime=@d点击按钮就不更新,也不提示错误,