none
gridview中的button RRS feed

  • 问题

  • 我在一个gridview中增加了一列,button,定义为“销假”操作,数据库表中有一个字段是用来标记“是否未销假”,0为未销假,1为已销假。可是在分页的时候,翻到第二页,button的状态和第一页的一样,并没有把是否已销假的状态更新,请问这个该怎么解决?

    下面是girdview绑定数据和分页的代码

    protected void personalleaveallDataBind()
      {
        PersonalLeaveNewLogic personalLeaveNewLogic = new PersonalLeaveNewLogic();
        DataSet personalLeaveAllDs = new DataSet();
        personalLeaveAllDs = personalLeaveNewLogic.GetPersonalLeaveNewAll();
        personalleaveall.DataSource = personalLeaveAllDs;
        personalleaveall.DataBind();
        DataTable dt = personalLeaveAllDs.Tables[0];
        int rows = personalleaveall.Rows.Count;
        for (int i = 0; i < rows; i++)
        {
          if (Convert.ToInt16(dt.Rows[i]["flag"]) == 1)
          {
            ((Button)this.personalleaveall.Rows[i].Cells[5].FindControl("Done")).Enabled = false;
            ((Button)this.personalleaveall.Rows[i].Cells[6].FindControl("lbtnDelete")).Enabled = false;
            this.hideModalPopupViaServer.Enabled = false;
          }
        }
        this.Panel1Timer.Enabled = false;
      }
    
      protected void personalleaveall_PageIndexChanging(object sender, GridViewPageEventArgs e)
      {
        personalleaveall.PageIndex = e.NewPageIndex;
        personalleaveallDataBind();
      }

    2010年5月13日 3:35

答案

  • 你好,

    你可以直接在绑定的时候设置其状态啊。如果为1,则让其enabled=false;

     <asp:GridView ID="GridView1" runat="server">
      <Columns>
      <asp:TemplateField HeaderText="是否销假">
       <ItemTemplate>
       <asp:Button ID="Button1" runat="server" Text="销假" Enabled='<%# Convert.ToInt32(Eval("销假"))==0?true:false%>'/>
       </ItemTemplate>
      </asp:TemplateField>
      </Columns>
     </asp:GridView>
    至于绑定的时候你只要给这个gridview设置数据源然后绑定就行了,不用再去改变这个button的enable属性了。
    Microsoft Online Community Support
    2010年5月17日 2:03

全部回复

  •  

    if (Convert.ToInt16(dt.Rows[i]["flag"]) == 1)


    {

    ((Button)this.personalleaveall.Rows[i].Cells[5].FindControl("Done")).Text= "已销毁";

    }

    else

    {

    ((Button)this.personalleaveall.Rows[i].Cells[5].FindControl("Done")).Text= "未销毁";

    }


    【孟子E章】
    2010年5月13日 4:29
    版主
  • 您的这个和我的那个除了显示不同外,有什么不一样的吗?

    在销假后不允许在点击销假按钮,您的这个答案明显的提示是否销假过,并没有本质上解决我提出的问题吧?

    2010年5月13日 6:02
  • 你好,

    你可以直接在绑定的时候设置其状态啊。如果为1,则让其enabled=false;

     <asp:GridView ID="GridView1" runat="server">
      <Columns>
      <asp:TemplateField HeaderText="是否销假">
       <ItemTemplate>
       <asp:Button ID="Button1" runat="server" Text="销假" Enabled='<%# Convert.ToInt32(Eval("销假"))==0?true:false%>'/>
       </ItemTemplate>
      </asp:TemplateField>
      </Columns>
     </asp:GridView>
    至于绑定的时候你只要给这个gridview设置数据源然后绑定就行了,不用再去改变这个button的enable属性了。
    Microsoft Online Community Support
    2010年5月17日 2:03