有一个DataGrid:
ID  编号   原工资  新工资  生效日期   是否生效   编辑
1   A0001   2000    3000   206-12-30      1      编辑
2   A0003   2000    3000   207-01-30             编辑问题:当"是否生效"字段的值为"1"时,怎样令这条记录的编辑项(LinkButton)为:Disable或者
弹出对话框提示不能修改.谢谢!!!!!

解决方案 »

  1.   

    private void DataGrid1_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
    {
    if(e.Item.ItemIndex>-1)
    {
    DataRowView row = (DataRowView)e.Item.DataItem;
    if(row["是否生效"].ToString() == "1")
    {
    LinkButton lbtn = e.Item.Cells[6].Controls[0] as LinkButton;
    lbtn.Enabled = false;
    }
    }
    }
      

  2.   

    上面的代码对LinkButton样式的按钮列有效,如果是模版列
    <asp:TemplateColumn>
    <ItemTemplate>
    <asp:LinkButton id="myLinkButtonID" runat="server">编辑</asp:LinkButton>
    </ItemTemplate>
    </asp:TemplateColumn>则改为:
    LinkButton lbtn = e.Item.FindControl("myLinkButtonID") as LinkButton;
      

  3.   

    谢谢Eddie005(♂) №.零零伍 (♂) 的帮忙,我是用模版绑定字段的,您所给的方法能用吗?所有代码如下:
    --------------------------------------------------------------------------------
    using System;
    using System.Collections;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Web;
    using System.Web.SessionState;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.HtmlControls;
    using System.Data.SqlClient;
    using System.Configuration;namespace Raises.Page
    {
    /// <summary>
    /// QueryRaise 的摘要说明。
    /// </summary>
    public class QueryRaise : System.Web.UI.Page
    {
    protected System.Web.UI.WebControls.DataGrid Mydg;
    protected System.Web.UI.WebControls.LinkButton PageFirst;
    protected System.Web.UI.WebControls.LinkButton PagePrev;
    protected System.Web.UI.WebControls.LinkButton PageNext;
    protected System.Web.UI.WebControls.LinkButton PageLast;
    private readonly string SQLCONNECTIONSTRING=ConfigurationSettings.AppSettings["SQLCONNECTIONSTRING"].ToString();private void BindDataGrid()
    {
    SqlConnection myConnection = new SqlConnection(SQLCONNECTIONSTRING);
    string sqlstr = "Select * from Raises";
    SqlCommand myCommand = new SqlCommand(sqlstr,myConnection);
    myConnection.Open();
    SqlDataAdapter da = new SqlDataAdapter(myCommand);
    DataSet ds = new DataSet();
    da.Fill(ds);
    Mydg.DataSource = ds;
    Mydg.DataBind();
    myConnection.Close();
    }private void Mydg_PageIndexChanged(object source,System.Web.UI.WebControls.DataGridPageChangedEventArgs e)
    {
    Mydg.CurrentPageIndex = e.NewPageIndex;
    BindDataGrid();
    }private void PageCut_Click(object sender,System.EventArgs e)
    {
    string commangArg=((LinkButton)sender).CommandArgument;
    switch(commangArg)
    {
    case "First":{Mydg.CurrentPageIndex = 0;break;}
    case "Prev":{Mydg.CurrentPageIndex = (int)Math.Max(0,Mydg.CurrentPageIndex - 1);break;}
    case "Next":{Mydg.CurrentPageIndex = (int)Math.Min(Mydg.PageCount - 1,Mydg.CurrentPageIndex + 1);break;}
    case "Last":{Mydg.CurrentPageIndex = Mydg.PageCount - 1;break;}
    default:{break;}
    }
    BindDataGrid();
    IsFirstLastPage();
    }
    private void IsFirstLastPage()
    {
    if(Mydg.PageCount > 0)
    {
    if(Mydg.PageCount != 1)
    {
    if(Mydg.CurrentPageIndex == 0)
    {
    PagePrev.Enabled = false;
    }
    else
    {
    PagePrev.Enabled = true;
    }
    if(Mydg.CurrentPageIndex == Mydg.PageCount -1)
    {
    PageNext.Enabled = false;
    }
    else
    {
    PageNext.Enabled = true;
    }
    }
    else
    {
    PagePrev.Enabled = false;
    PageNext.Enabled = false;
    }
    }
    else
    {
    PageFirst.Enabled = false;
    PageLast.Enabled = false;
    PageNext.Enabled = false;
    PagePrev.Enabled = false;
    }
    }
    private void Mydg_EditCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
    {
    Mydg.EditItemIndex=(int)e.Item.ItemIndex;
    Mydg.DataBind();
    BindDataGrid();}private void Mydg_CancelCommand(object source,System.Web.UI.WebControls.DataGridCommandEventArgs e)
    {
    Mydg.EditItemIndex=-1;
    BindDataGrid();
    }private void Mydg_UpdateCommand(object source,System.Web.UI.WebControls.DataGridCommandEventArgs e)
    {SqlConnection myConnection=new SqlConnection(SQLCONNECTIONSTRING);
    string strSQL2="select Effect from raises where ViewOrder=@ViewOrder";
    string strSQL="Update Raises Set NewSalary=@NewSalary,TakeEffectDate=@TakeEffectDate,Behave=@Behave,Re=@Re,Effect=@Effect Where ViewOrder=@ViewOrder";
    SqlCommand myCommand=new SqlCommand(strSQL,myConnection);
    myConnection.Open();myCommand.Parameters.Add(new SqlParameter("@ViewOrder",SqlDbType.Int));
    myCommand.Parameters.Add(new SqlParameter("@NewSalary",SqlDbType.Decimal,2));
    myCommand.Parameters.Add(new SqlParameter("@TakeEffectDate",SqlDbType.DateTime));
    myCommand.Parameters.Add(new SqlParameter("@Behave",SqlDbType.VarChar,50));
    myCommand.Parameters.Add(new SqlParameter("@Re",SqlDbType.VarChar,50));
    myCommand.Parameters.Add(new SqlParameter("@Effect",SqlDbType.VarChar,10));
    myCommand.Parameters["@NewSalary"].Value=((TextBox)e.Item.Cells[7].Controls[1]).Text;
    myCommand.Parameters["@TakeEffectDate"].Value=((TextBox)e.Item.Cells[8].Controls[1]).Text;
    myCommand.Parameters["@Behave"].Value=((TextBox)e.Item.Cells[9].Controls[1]).Text;
    myCommand.Parameters["@Re"].Value=((TextBox)e.Item.Cells[10].Controls[1]).Text;
    myCommand.Parameters["@Effect"].Value=((RadioButtonList)e.Item.Cells[11].Controls[1]).SelectedValue;
    myCommand.Parameters["@ViewOrder"].Value=((Label)e.Item.Cells[0].Controls[1]).Text;
    //Convert.ToString(int.Parse(e.Item.ItemIndex.ToString())+1); 这句在利用了页面提交后,更新数据时异常.
    myCommand.ExecuteNonQuery();
    Mydg.EditItemIndex=-1;
    myConnection.Close();
    BindDataGrid();
    }private void Page_Load(object sender, System.EventArgs e)
    {
    if(!Page.IsPostBack)
    {
    BindDataGrid();
    IsFirstLastPage();
    }
    }#region Web 窗体设计器生成的代码
    override protected void OnInit(EventArgs e)
    {
    //
    // CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
    //
    InitializeComponent();
    base.OnInit(e);
    }/// <summary>
    /// 设计器支持所需的方法 - 不要使用代码编辑器修改
    /// 此方法的内容。
    /// </summary>
    private void InitializeComponent()
    {    
    this.Mydg.PageIndexChanged += new System.Web.UI.WebControls.DataGridPageChangedEventHandler(this.Mydg_PageIndexChanged);
    this.Mydg.CancelCommand += new System.Web.UI.WebControls.DataGridCommandEventHandler(this.Mydg_CancelCommand);
    this.Mydg.EditCommand += new System.Web.UI.WebControls.DataGridCommandEventHandler(this.Mydg_EditCommand);
    this.Mydg.UpdateCommand += new System.Web.UI.WebControls.DataGridCommandEventHandler(this.Mydg_UpdateCommand);
    this.PageFirst.Click += new System.EventHandler(this.PageCut_Click);
    this.PagePrev.Click += new System.EventHandler(this.PageCut_Click);
    this.PageNext.Click += new System.EventHandler(this.PageCut_Click);
    this.PageLast.Click += new System.EventHandler(this.PageCut_Click);
    this.Load += new System.EventHandler(this.Page_Load);}
    #endregion
    }
    }