GridView控件绑定了一个Flag字段,值如下:0-未审核,1-审核通过,2-审核未通过,数据库中保存的是编号,而GridView中显示的是对应的名称。
要在编辑或删除前需要获取Flag编号,则有两种情况:(在RowDataBound事件中使用DataBinder.Eval(e.Row.DataItem, "Flag").ToString();获取)
(1)如果GridView在显示中未进行转换,直接显示编号,则在编辑或删除时要获取编号值,很简单
在RowDeleting事件中使用GridView.Rows[e.RowIndex].Cells[n].Text
在RowEditing事件中使用GridView.Rows[e.NewEditIndex].Cells[n].Text
(2)如果GridView在显示时进行了转换,显示的不是编号而是对应的汉字,如果还想在编辑或删除时获取编号,此编号又不是主键,可以通过给编辑或删除按钮设置CommandArgument来实现。
HTML中:
<asp:TemplateField HeaderText="编辑">
                                        
<EditItemTemplate>
                                            
<asp:LinkButton ID="lbtnUpdate" runat="server" CommandName="Update">更新</asp:LinkButton>
                                            
<asp:LinkButton ID="lbtnCancel" runat="server" CausesValidation="False" CommandName="Cancel">取消</asp:LinkButton>
                                        
</EditItemTemplate>
                                        
<ItemTemplate>
                                            
<asp:ImageButton ID="ImageButton1" runat="server" CausesValidation="False" CommandArgument='<%# DataBinder.Eval(Container.DataItem,"Flag") %>'
                                                ImageUrl
="~/Images/edit.gif" CommandName="Edit" />
                                        
</ItemTemplate>
                                    
</asp:TemplateField>
                                    
<asp:TemplateField HeaderText="删除">
                                        
<ItemTemplate>
                                            
<asp:ImageButton ID="lbtnDelete" runat="server" CausesValidation="False" CommandName="Delete" CommandArgument='<%# DataBinder.Eval(Container.DataItem,"Flag") %>'
                                                ImageUrl
="~/Images/delete.gif" OnClientClick="return confirm('确定要删除吗?')" />
                                        
</ItemTemplate>
                                    
</asp:TemplateField>
C#中:
 protected void gvReward_RowDeleting(object sender, GridViewDeleteEventArgs e)
    {
        
string strFlag = ((ImageButton)gvReward.Rows[e.RowIndex].FindControl("lbtnDelete")).CommandArgument;//在HTML中设置了CommandArgument,使其绑定了Falg字段的值
        
//string strFlag = gvReward.Rows[e.RowIndex].Cells[7].Text.ToString().Trim();//获取当前行中被绑定的‘Flag’字段的值
        if (strFlag == "1")
        {
            ScriptManager.RegisterStartupScript(
this.Page, typeof(Page), """alert('此信息学工处已审核通过,不允许删除')"true);
        }
        
else
        {
            
int iID = Convert.ToInt32(gvReward.DataKeys[e.RowIndex].Value);
            
try
            {
                
if (StudentReward.RemoveRewardList(iID))
                {
                    ScriptManager.RegisterStartupScript(
this.Page, typeof(Page), """alert('删除成功')"true);
                    BindGridView();
                }
                
else
                {
                    ScriptManager.RegisterStartupScript(
this.Page, typeof(Page), """alert('删除失败')"true);
                }
            }
            
catch (Exception ex)
            {
                ScriptManager.RegisterStartupScript(
this.Page, typeof(Page), """alert('删除出现异常')"true);
            }
        }
    }
 protected void gvReward_RowEditing(object sender, GridViewEditEventArgs e)
    {
        
string strFlag = ((ImageButton)gvReward.Rows[e.NewEditIndex].FindControl("ImageButton1")).CommandArgument;//在HTML中设置了CommandArgument,使其绑定了Falg字段的值
        if (strFlag == "1"//审核没通过的,也可以修改,不过此时审核状态需要同时修改为“0”未审核
        {
            ScriptManager.RegisterStartupScript(
this.Page, typeof(Page), """alert('此信息学工处已审核通过,不允许修改')"true);
        }
        
else
        {
            gvReward.EditIndex 
= e.NewEditIndex;
            BindGridView();
        }
    }