2015-07-01 30 views
1

我有一個DataGrid顯示數據庫中的值。 DataGrid然後填充在不同的類文件中。但是我在html代碼中有一個複選框,檢查它是否被選中。當複選框被選中時,我想從DataGrid中加載RevToDate列。所以我得到一個錯誤:chkRevToDate不存在。 那麼如何在另一個類中調用chkRevToDate複選框?如何從不同的類文件調用複選框?

代碼的DataGrid在一個名爲Customer.aspx.cs文件:

<div runat="server" id="dvMainGrid" class="dvResultsLookup"> 
    <asp:DataGrid runat="server" CssClass="tblResults" OnItemDataBound="dgList_ItemCreated" AllowSorting="true" OnSortCommand="dgCustomer_Sort" ID="dgCustomers" DataKeyField="ID" AutoGenerateColumns="false"> 
     <HeaderStyle CssClass="tblResultsHeader" /> 
     <AlternatingItemStyle BackColor="#EEEEEE" /> 
     <Columns> 
      <asp:HyperLinkColumn ItemStyle-CssClass="loading" DataNavigateUrlFormatString="Customer.aspx?CustID={0}" DataNavigateUrlField="ID" DataTextField="AccountCode" HeaderText="A/C Code" SortExpression="AccountCode"></asp:HyperLinkColumn> 
      <asp:BoundColumn DataField="VATNo" HeaderText="VAT No" SortExpression="VATNo"></asp:BoundColumn> 
      <asp:BoundColumn DataField="CurrencyDesc" HeaderText="Currency" SortExpression="CurrencyDesc"></asp:BoundColumn> 
      <asp:BoundColumn DataField="RevToDate" HeaderText="Rev To Date (Net)" Visible="false" SortExpression="RevToDate"></asp:BoundColumn> 
     </Columns> 
    </asp:DataGrid> 

而在同一類DataGrid中我有複選框

<asp:CheckBox runat="server" ID="chkRevToDate" Checked="false" /> 

代碼加載值碼成在一個名爲Customer.cs文件的DataGrid:

public static DataGrid BuildGrid(bool IncludeContacts) 
{ 
    DataGrid NewDg = new DataGrid(); 

    NewDg.DataKeyField = "ID"; 
    NewDg.AutoGenerateColumns = false; 
    NewDg.CssClass = "tblResults draggable"; 
    NewDg.HeaderStyle.CssClass = "tblResultsHeader"; 
    NewDg.AlternatingItemStyle.CssClass = "ResultsStyleAlt"; 
    NewDg.ItemStyle.CssClass = "ResultsStyle"; 
    NewDg.Columns.Add(Load.CreateBoundColumn("VATNo", "VAT No")); 
    NewDg.Columns.Add(Load.CreateBoundColumn("CurrencyDesc", "Currency")); 

    if (chkRevToDate.Checked) //error 
    { 
     NewDg.Columns.Add(Load.CreateBoundColumn("RevToDate", "Re To Date (Net)")); 
    } 
    return NewDg; 
} 

有沒有辦法來調用chkRevToDate在一個不同的課程?

+0

的.cs你應該在你的PA提供的公共屬性ge和'DataGrid'和'CheckBox'。此屬性只是返回一個布爾值:'公共布爾ShowRevToDateColumn { get {return chkRevToDate.Checked; } set {chkRevToDate.Checked = value; }然後,你需要在另一個文件中的頁面實例。 –

+0

@TimSchmelter好的謝謝。我需要做什麼來創建實例? – user123456789

回答

1

你應該通過在客戶類BuildGrid功能複選框參考比你可以在BuildGrid功能訪問此複選框

代碼編輯按你的代碼

public static DataGrid BuildGrid(bool IncludeContacts , CheckBox chkRevToDate) 
{ 
if (chkRevToDate.Checked) 
    { 
      NewDg.Columns.Add(Load.CreateBoundColumn("RevToDate", "Re To Date (Net)")); 
    } 
} 

你可以調用函數Customer.aspx像在你

ClassName.BuildGrid(true,chkRevToDate); // chkRevToDate是複選框aspx文件

1

您應該在頁面中提供一個公共財產DataGridCheckBox。這個屬性只是返回一個bool

public bool ShowRevToDateColumn 
{ 
    get { return chkRevToDate.Checked; } 
    set { chkRevToDate.Checked = value; } 
} 

然後,你需要你的頁面的實例中的其他文件。

您不應該創建實例,它已經存在。如果該類是一個實用工具類的靜態方法,你可以使用HttpContext.Current

PageClassName page = HttpContext.Current.Handler as PageClassName; 
if (page != null) 
{ 
    bool checked = page.ShowRevToDateColumn; 
} 

也許它會更好,把它作爲參數傳遞給方法BuildGrid