0
我有一個模板字段的問題,我在Grid View的一行中爲數據創建鏈接。當我第一次運行我的頁面時,它工作正常,但後來當我在該網格視圖中隱藏一些其他列時,我想回到我的第一個視圖(我顯示隱藏的所有列)後面的代碼拋出空指針異常。但是對於該網格的查詢是相同的,並且列是相同的。當我隱藏並添加一些列到我的代碼時,總會發生。GridView中的TemplateField Asp.Net Web窗體
請如果你能幫助我,我將非常感激。
<asp:TemplateField HeaderText="zz" Visible="False">
<ItemTemplate>
<asp:Label ID="Label_typ" runat="server"
Text='<%# Eval("TYP") %>'></asp:Label>
<br> </br>
</ItemTemplate>
</asp:TemplateField>
女巫背後的代碼使我的所有代碼複雜化。沒有它,它工作正常。
if (actualYear.Equals(dd_rok22.SelectedValue))
{
int numberOfWeek = 1;
for (int i = Convert.ToInt32(actualMonth); i <= 12; i++)
{
GRID_VIEW_MAKRO.Columns[i + 7].Visible = false;
if (i == Convert.ToInt32(actualMonth))
{
int numberColumnActual = i;
BoundField field2 = new BoundField();
GRID_VIEW_MAKRO.Columns.Insert(numberColumnActual + 3, field2);
for (int j = 1; j <= weekNumberActualMonth; j++)
{
BoundField field = new BoundField();
GRID_VIEW_MAKRO.Columns.Insert(numberColumnActual + 3, field);
field.HeaderText = "M" + actualMonth + "_T" + numberOfWeek;
field.DataFormatString = "{0:###,###}";
numberColumnActual++;
numberOfWeek++;
}
for (int numberOfWeekPrevious = numberOfWeek; numberOfWeekPrevious <= 4; numberOfWeekPrevious++)
{
BoundField field = new BoundField();
GRID_VIEW_MAKRO.Columns.Insert(numberColumnActual + 2, field);
field.HeaderText = "M" + previousMonth2 + "_T" + numberOfWeek;
field.DataFormatString = "{0:###,###}";
numberOfWeek++;
numberColumnActual++;
}
}
}
}
而異常顯示當我創建標籤女巫有空值,因爲TemplateField有空值。
protected void OnRowCreated(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
string mregion= DataBinder.Eval(e.Row.DataItem, "MAKRO_NAME").ToString();
Label lbl = (Label)e.Row.FindControl("Label_typ");
string CellValue = Convert.ToString(DataBinder.Eval(e.Row.DataItem, "ROK"));
//it cannot Trim me null value..
string ID = lbl2.Text.Trim() + '_' + lbl3.Text.Trim();
e.Row.Attributes.Add("onclick", "top.location.href='report_se.aspx?nazwa=" + ID + "&ye=" + CellValue + "';");
}
}
Add。 1我認爲這不應該是一個問題,但是當我這樣做時就會發生。 Add。 2當我調試我的代碼時,它在編譯代碼之前看起來像在OnRoWCreated方法中,它創建了一個TemplateField,並且它工作正常。但是在編譯'OnRowCreated'時創建和隱藏其他列之後,它不創建'TemplateField'(它看起來像compilator didint在aspx代碼中看到這些字段)。 – Adriano