定义一个模板列 里面放置一个LinkButton,根据where条件(string类型参数),修改符合条件的记录
首先设置linkbutton的命令参数,在RowCreated事件中创建。该参数为响应行的关键字的值。 bf.CommandArgument = gvUpdateColumn.DataKeys[e.Row.RowIndex].Value.ToString(); (bf为按钮)
然后为按钮添加一个委托,将响应事件交由 bf_Click 函数来处理 :bf.Click += new EventHandler(bf_Click);
<asp:TemplateField HeaderText="更新" ShowHeader="False">
<ItemTemplate>
<asp:LinkButton ID="lkbUpdate" runat="server" CausesValidation="false" CommandName="update"
Text="更新"></asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>
protected void gvUpdateColumn_RowCreated(object sender, GridViewRowEventArgs e)
...{
if (e.Row.RowType == DataControlRowType.DataRow)
...{
LinkButton bf = (LinkButton)e.Row.FindControl("lkbUpdate");
bf.CommandArgument = gvUpdateColumn.DataKeys[e.Row.RowIndex].Value.ToString();
bf.Click += new EventHandler(bf_Click);
}
}
void bf_Click(object sender, EventArgs e)
...{
SqlConnection con = new SqlConnection("server=xxx; database=xxx;uid=xxx; pwd=xxx;");
con.Open();
LinkButton lkb = (LinkButton)sender;
//获取事件按钮所在的行
GridViewRow gvr = (GridViewRow)lkb.Parent.Parent;
//需要更新的编码值
string newCode = ((TextBox)gvr.FindControl("txtTemp")).Text;
if (lkb.CommandArgument != "")
...{
string sql = "update " + ddlTableName.SelectedItem.Text + " set tempField ='" + newCode + "'";
sql += " where " + ddlFields.SelectedItem.Text + "=" + lkb.CommandArgument;
SqlCommand cmd = new SqlCommand(sql, con);
if (newCode != "")
...{
cmd.ExecuteNonQuery();
Response.Write("<script>alert('更新成功')</script>");
BindGridView(ddlTableName.SelectedItem.Text, ddlFields.SelectedItem.Text);
}
else
...{
//如果不填写新的码值,那么将tempField列设为Null
cmd.CommandText = "update " + ddlTableName.SelectedItem.Text + " set tempField =null where " + ddlFields.SelectedItem.Text + "=" + lkb.CommandArgument;
}
}
con.Close();
}
1106

被折叠的 条评论
为什么被折叠?



