繁体   English   中英

GridView Asp.Net Web窗体中的TemplateField

[英]TemplateField in GridView Asp.Net Web Forms

我在模板字段中遇到问题,我在其中为网格视图中的一行创建数据链接。 第一次运行页面时,它运行良好,但是稍后,当我在该网格视图中隐藏其他一些列时,我想返回我的第一个视图(我显示了所有隐藏的列),然后在我的代码中抛出空指针异常。 但是查询该网格是相同的,列也是相同的。 当我隐藏并向代码中添加一些列时,总是会发生这种情况。

请您帮助我,我将不胜感激。

              <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++;
                    }

                }
            }
        }

并且异常显示当我创建Label时,由于TemplateField具有null值而具有null值。

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 + "';");


        }
    }

1)使某些字段可见为false不应在运行时创建任何错误。

2)对于空指针异常,我认为您正在尝试类型转换空值。 如果您的任何字段包含空值,则建议在类型转换之前对其进行检查。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM