2017-06-20 53 views
0

在我的gridview中,有一列IsYearly。该值可以是1或0.asp.net GridView不显示正确的数据,除非发回事件

在页面加载时,所有数据的默认值为0,但是当我更新数据时,gridview将成为页面加载时的值。

这里是在GridView:

<asp:GridView ID="gridView_Holidays" runat="server" AutoGenerateColumns="False" Style="margin-right: 10px; margin-top: 0px;" AllowPaging="True" OnPageIndexChanging="grdHolidays_PageIndexChanging" OnRowDataBound="grdHolidays_RowDataBound" PageSize="10" CssClass="table-grid"> 
     <Columns> 
      <asp:BoundField DataField="HolidayName" HeaderText="Name"> 
       <HeaderStyle BackColor="#0078D7" ForeColor="White" Width="320px" /> 
       <ItemStyle BackColor="White" ForeColor="Black" Width="320px" /> 
      </asp:BoundField> 
      <asp:BoundField DataField="HolidayDate" HeaderText="Date"> 
       <HeaderStyle BackColor="#0078D7" ForeColor="White" Width="256px" /> 
       <ItemStyle BackColor="White" ForeColor="Black" Width="256px" /> 
      </asp:BoundField> 
      <asp:BoundField DataField="HolidayID" HeaderText="Holiday ID"> 
       <HeaderStyle BackColor="#0078D7" ForeColor="White" CssClass="HideControl" /> 
       <ItemStyle BackColor="White" ForeColor="Black" CssClass="HideControl" /> 
      </asp:BoundField> 
      <asp:BoundField DataField="HolidayIsYearly" HeaderText="Holiday Yearly"> 
       <HeaderStyle BackColor="#0078D7" ForeColor="White" CssClass="HideControl" /> 
       <ItemStyle BackColor="White" ForeColor="Black" CssClass="HideControl" /> 
      </asp:BoundField> 

      <asp:TemplateField ItemStyle-Width="40px" HeaderText="" ItemStyle-CssClass="tblItem" HeaderStyle-CssClass="header"> 
       <ItemTemplate> 
        <asp:ImageButton ID="imgBtnEditHoliday" runat="server" OnClick="lnkEditHoliday_Click" ImageUrl="~/Images/EDIT.GIF" ToolTip="Edit" /> 
        <asp:ImageButton ID="imgBtnDeleteHoliday" runat="server" Width="16px" OnClick="lnkDeleteHoliday_Click" ImageUrl="~/Images/deleteuser.png" ToolTip="Delete" /> 
       </ItemTemplate> 
       <HeaderStyle BackColor="#0078D7" ForeColor="White" Font-Size="Medium" /> 
       <ItemStyle BackColor="White" ForeColor="Black" Font-Size="Medium" /> 
      </asp:TemplateField> 
     </Columns> 

     <EmptyDataTemplate> 
      No results to show. 
     </EmptyDataTemplate> 
    </asp:GridView> 

后面的代码:

protected void Page_Load(object sender, EventArgs e) { 
      if (!IsPostBack) { 
       HolidayList(); 
       imgBtnSearchApprover_Click(this, EventArgs.Empty); 
      } 
     } 

     public void HolidayList() { 
      Admin = new List<DTR_Admin>(); 
      Admin = mServiceHoliday.GetList(); 
      gridView_Holidays.DataSource = Admin; 
      gridView_Holidays.DataBind(); 
     } 

这是当我点击保存按钮,其中的gridview的(我认为)将刷新,以便它显示了发生了什么正确的数据

protected void btnHolidaySave_Click(object sender, ImageClickEventArgs e) { 
      if (string.IsNullOrEmpty(txtHolidayName.Text) || string.IsNullOrEmpty(txtHolidayDate.Text)) { 
       lblCostCenterError.Text = "Please complete all fields."; 
       ModalPopupExtender2.Show(); 
      } 
      else { 
       if (Admin.Exists(x => (Convert.ToDateTime(x.HolidayDate) == Convert.ToDateTime(txtHolidayDate.Text) && x.HolidayID != holidayID))) { 
        ClientScript.RegisterStartupScript(GetType(), "load", "alert('Date already exists.');", true); 
        ModalPopupExtender2.Show(); 
       } 
       else { 
        DTR_HolidayService holidayService = new DTR_HolidayService(); 
        DTR_Admin pEntity = new DTR_Admin(); 
        pEntity.HolidayID = holidayID; 
        pEntity.HolidayDate = txtHolidayDate.Text; 
        pEntity.HolidayName = txtHolidayName.Text; 
        pEntity.HolidayIsYearly = cbYearly.Checked ? 1 : 0; 

        holidayService.EditHoliday(pEntity); 
        HolidayList(); 
       } 
      } 
     } 

回答

0

我认为你可以使用这段代码来设置数据库的代码中的默认值

public int _HolidayIsYearly= 1; 
public int HolidayIsYearly 
     { 
      get { return _HolidayIsYearly; } 
      set { _HolidayIsYearly= value; } 
     } 
+0

我试了一下,现在所有的值设置为1 – aronccs

0
public byte HolidayIsYearly { get; set; } 

请检查该解决方案