【发布时间】:2011-11-17 10:04:22
【问题描述】:
我正在使用 VS2005。目前,我的 gridview 中有一个删除链接按钮,如果我按下它来删除一行,GridView 就会变空,我将不得不再次单击该链接才能访问该页面。
以下是我的 .aspx 代码:
<asp:GridView ID="GridView1" runat="server" DataSourceID="SqlDataSource1" ondatabound="gv_DataBound" OnSelectedIndexChanged="GridView1_SelectedIndexChanged">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:CheckBox ID="UserSelection" OnCheckedChanged="UserSelector_CheckedChanged" runat="server" />
<asp:LinkButton ID="lnkDelete" runat="server" onclick="lnkDelete_Click" Text="Delete" CommandArgument='<%# Eval("Employee") %>' ></asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
下面是我的 .cs 代码
protected void lnkDelete_Click(object sender, EventArgs e)
{
LinkButton lnk = (LinkButton)sender;
string stid = lnk.CommandArgument.ToString();
SqlDataSource1.SelectCommand = "DELETE FROM [UserDB]where Employee like '%"+stid+"%'";
SqlDataSource1.DataBind();
}
我已尝试将我的删除查询分配给 SqlDataSource1 并将选择查询分配给 source2,但如果是这种情况,我的删除查询将不起作用。
我也尝试过在我的 PageLoad 方法上使用 IsPostBack,但在单击删除按钮后 GridView 也会变空。
目前我的两个查询都分配给 SqlDataSource1,一旦查询被删除,页面就会变成空白,尽管查询已被删除。
我可以知道在删除查询运行后如何刷新页面或重新加载 GridView 表吗?
谢谢。
感谢各位的帮助,问题解决了。目前我的工作代码如下:
LinkButton lnk = (LinkButton)sender;
string stid = lnk.CommandArgument.ToString();
SqlConnection conn = new SqlConnection("DATA-SOURCE");
string sql = string.Format("DELETE FROM [UserDB] where Employee like '%{0}%'",stid);
SqlCommand cmd = new SqlCommand(sql,conn);
conn.Open();
cmd.ExecuteNonQuery();
conn.Close();
SqlDataSource1.SelectCommand = "SELECT * FROM [UserDB]";
SqlDataSource1.DataBind();
Response.Redirect("/Project/UserList.aspx");
我使用sql连接字符串进行删除查询,然后使用sqldatasource进行选择查询,最后使用response.redirect刷新了页面。希望它对像我这样也遇到此错误的新手有所帮助。
非常感谢所有提供帮助的人
【问题讨论】:
-
尝试将 autopostback=true 放入您的删除按钮标记代码中。
-
我猜你可以做一个 gridview.DataBind() 而不是 sqlDatasource.databind。 gridviews 数据绑定在内部执行 sqldatasource 数据绑定并刷新 gridview。
标签: c# asp.net sql visual-studio