求助,GridView中动态切换审核开关的方法
现在有一个GridView,审核部分用的是
ButtonField CommandName= "yes " Text= "通过审核 "
ButtonField CommandName= "no " Text= "取消审核 "
大概如下
标题 发布者 发布日期 编辑 删除
作品1 leee 2007-5-10 编辑 删除 通过审核 取消审核
我想实现如果是已经审核的行,就只显示“取消审核”
而未审核的,就显示“通过审核”,并切根据显示内容的不同,完成通过/取消的操作
作品1 leee 2007-5-10 编辑 删除 取消审核
作品2 sde 2007-5-12 编辑 删除 通过审核
我刚开始学,希望指点一下,最好给个相对完整点的代码片段(前台+cs代码),好研究一下,谢谢了
------解决方案--------------------请实现 grdPro_RowCommand 方法具体逻辑,
这里,假设你的“审核字段”只有二元值(如非1即0),因此更新的时候采取了技巧:
"UPDATE Product SET Reviewed = (CASE Reviewed = 1 WHEN 0 ELSE 1 END) WHERE ProductId = @ProductId ";
若是其他类型,请自行做响应修改
同时提供 CheckBox 示例
另外,你也可以设计两个Button,一个做通过,一个做取消,然后设定其Visible属性,
<%@ Page Language= "C# " %>
<%@ Import Namespace= "System.Data " %>
<%--
http://community.csdn.net/Expert/topic/5590/5590084.xml?temp=3.222293E-02
--%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN " "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd ">
<script runat= "server ">
void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack) {
// 首次加载数据一定要放在 !IsPostBack 内,
// 避免回发的时候再次绑定数据,覆盖复选框状态
LoadProductData();
}
}
void chk_CheckedChanged(object sender, EventArgs e)
{
// 触发此事件的 CheckBox
CheckBox chk = sender as CheckBox;
// 得到 CheckBox 所在行
GridViewRow row = chk.NamingContainer as GridViewRow;
// 得到 GridView,当然这里可以直接引用控件ID
GridView grd = row.NamingContainer as GridView;
// 得到主键
int productId = (int)grd.DataKeys[row.RowIndex].Value;
// more codes
// ...
System.Diagnostics.Debug.Assert(false, productId.ToString());
Response.Write(row.RowIndex);
}
void grdPro_RowCommand(object sender, GridViewCommandEventArgs e)
{
switch (e.CommandName) {
case "Review ":
// 触发此事件的 Button
Button btnReview = e.CommandSource as Button;
// 得到 Button 所在行
GridViewRow row = btnReview.NamingContainer as GridViewRow;
// 得到 GridView,当然这里可以直接引用控件ID
GridView grd = row.NamingContainer as GridView;
int productId = (int)grd.DataKeys[row.RowIndex].Value;
// comment the line below in your release verion
Response.Write(productId);
// your more codes
// in your case, maybe take the update sql as following: