簡體   English   中英

靜態變量作為grdiv視圖asp.net中TemplateFields的標題

[英]static variables as Header of TemplateFields in grdiv view asp.net

我有asp.net應用程序,其中有帶有edit,Delete,Add選項的可編輯網格視圖。 該網格具有常規的模板字段。 我也有一個具有靜態字符串變量的靜態類。 我想將這些靜態變量的值保留為“模板字段”的標題文本。 所以我通過以下方式導入了我的常量類的名稱空間:

<%@ Import Namespace="ConstantManagerNamespace" %>

然后我嘗試了同一列:

1. <asp:TemplateField HeaderText=<%=ConstantManager.Name%>>

2. <asp:TemplateField HeaderText='<%=ConstantManager.Name%>'>

3. <asp:TemplateField HeaderText=<% ConstantManager.Name %>>

4. <asp:TemplateField HeaderText='<% ConstantManager.Name%>'>

  all probable syntax to access my constant variable value but

我收到解析器錯誤:

Literal content ('<asp:TemplateField HeaderText=') is not allowed within a 'System.Web.UI.WebControls.DataControlFieldCollection'.

這個怎么做 ?

發生此問題的原因是您試圖將服務器端控件/值嵌入另一個服務器端控件中。 除非您使用數據綁定或自定義表達式生成器,否則在asp.net中這是不可能直接實現的。

對於您的確切情況,您需要創建一個自定義表達式構建器,該構建器將返回您的靜態類中的值。

最終結果應如下所示:

<asp:TemplateField HeaderText="<$ ConstantManager:Name >">

只要您使用"ConstantManager"前綴定義了自定義表達式生成器,aspx文件就絕對允許這樣做。

創建自定義表達式構建器的實際示例可以在以下位置找到: ExpressionBuilder Class

補充

另外,我認為數據綁定也將起作用,但是在我看來,這種情況並不是確切的解決方案。

只需在aspx標記中使用以下語法:

<asp:TemplateField HeaderText="<# ConstantManager.Name >">

並且,在頁面加載時,調用:

protected void Page_Load(object sender, System.EventArgs e)
{
    this.DataBind();
}

就個人而言,由於Page_Load部分,我不喜歡這種解決方案。 無論如何,與自定義表達式相比,不需要任何特殊的聲明/編碼。

我希望這有幫助!

最好在GridView RowDataBound事件中綁定靜態類變量,

檢查行類型是標題,即。

 if (e.Row.RowType == DataControlRowType.Header)
    {
       e.Row.Cells[0].Text = ConstantManager.Name;                  
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM