Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net Gridview页脚按钮取消缩放显示错误,因为对象引用未设置为对象的实例_Asp.net_Gridview - Fatal编程技术网

Asp.net Gridview页脚按钮取消缩放显示错误,因为对象引用未设置为对象的实例

Asp.net Gridview页脚按钮取消缩放显示错误,因为对象引用未设置为对象的实例,asp.net,gridview,Asp.net,Gridview,我对asp.net都是新手。我的问题是,我的gridview在ItemTemplates中有文本框,在footer中有单个按钮。当我在gridview中单击该按钮时,将手动添加行,并使用ny编码 <asp:GridView ID="GridView2" runat="server" ShowFooter="true" AutoGenerateColumns="False" onselectedindexchanged="GridView2_SelectedIndexCh

我对asp.net都是新手。我的问题是,我的gridview在ItemTemplates中有文本框,在footer中有单个按钮。当我在gridview中单击该按钮时,将手动添加行,并使用ny编码

<asp:GridView ID="GridView2" runat="server" ShowFooter="true" AutoGenerateColumns="False" 
         onselectedindexchanged="GridView2_SelectedIndexChanged">
         <Columns>
             <asp:BoundField HeaderText="S.No" DataField="RowNumber" />
             <asp:TemplateField HeaderText="Description">
                 <ItemTemplate>
                     <asp:TextBox ID="TextBox132" runat="server"></asp:TextBox>
                 </ItemTemplate>
             </asp:TemplateField>
             <asp:TemplateField HeaderText="SMV">
                 <ItemTemplate>
                     <asp:TextBox ID="TextBox133" runat="server"></asp:TextBox>
                 </ItemTemplate>
             </asp:TemplateField>
             <asp:TemplateField HeaderText="O/L">
                 <ItemTemplate>
                     <asp:TextBox ID="TextBox134" runat="server"></asp:TextBox>
                 </ItemTemplate>
             </asp:TemplateField>
             <asp:TemplateField HeaderText="F/L">
                 <ItemTemplate>
                     <asp:TextBox ID="TextBox135" runat="server"></asp:TextBox>
                 </ItemTemplate>
             </asp:TemplateField>
             <asp:TemplateField HeaderText="S/N">
                 <ItemTemplate>
                     <asp:TextBox ID="TextBox136" runat="server"></asp:TextBox>
                 </ItemTemplate>
             </asp:TemplateField>
             <asp:TemplateField HeaderText="Helper">
                 <ItemTemplate>
                     <asp:TextBox ID="TextBox137" runat="server"></asp:TextBox>
                 </ItemTemplate>
             </asp:TemplateField>
             <asp:TemplateField HeaderText="Man Power">
                 <ItemTemplate>
                     <asp:TextBox ID="TextBox138" runat="server"></asp:TextBox>
                 </ItemTemplate>
                  <FooterStyle HorizontalAlign="Right" />
                 <FooterTemplate>
                     <asp:Button ID="Button1" runat="server" Text="Add New" 
                         onclick="Button1_Click1" />
                 </FooterTemplate>
             </asp:TemplateField>

         </Columns>
     </asp:GridView>
这是我的前端编码

而aspx.cs编码是

 public void bindgrid()
    {

        DataTable dt = new DataTable();
        DataRow dr = null;
        dt.Columns.Add(new DataColumn("RowNumber", typeof(string)));
        dt.Columns.Add(new DataColumn("Column1", typeof(string)));
        dt.Columns.Add(new DataColumn("Column2", typeof(string)));
        dt.Columns.Add(new DataColumn("Column3", typeof(string)));
        dt.Columns.Add(new DataColumn("Column4", typeof(string)));
        dt.Columns.Add(new DataColumn("Column5", typeof(string)));
        dt.Columns.Add(new DataColumn("Column6", typeof(string)));
        dt.Columns.Add(new DataColumn("Column7", typeof(string)));
        dr = dt.NewRow();
        dr["RowNumber"] = 1;
        dr["Column1"] = string.Empty;
        dr["Column2"] = string.Empty;
        dr["Column3"] = string.Empty;
        dr["Column4"] = string.Empty;
        dr["Column5"] = string.Empty;
        dr["Column6"] = string.Empty;
        dr["Column7"] = string.Empty;
        dt.Rows.Add(dr);
        //dr = dt.NewRow();

        //Store the DataTable in ViewState
        ViewState["CurrentTable"] = dt;
        GridView2.DataSource = dt;
        GridView2.DataBind();
    }
    private void AddNewRowToGrid()
    {

        int rowIndex = 0;
        int val = Convert.ToInt16(TextBox63.Text);
        if (ViewState["CurrentTable"] != null)
        {
            DataTable dtCurrentTable = (DataTable)ViewState["CurrentTable"];
            DataRow drCurrentRow = null;
            if (dtCurrentTable.Rows.Count > 0)
            {
                for (int i = 1; i <= dtCurrentTable.Rows.Count; i++)
                {
                    //extract the TextBox values
                    TextBox box1 = (TextBox)GridView2.Rows[rowIndex].Cells[1].FindControl("TextBox132");
                    TextBox box2 = (TextBox)GridView2.Rows[rowIndex].Cells[2].FindControl("TextBox133");
                    TextBox box3 = (TextBox)GridView2.Rows[rowIndex].Cells[3].FindControl("TextBox134");
                    TextBox box4 = (TextBox)GridView2.Rows[rowIndex].Cells[4].FindControl("TextBox135");
                    TextBox box5 = (TextBox)GridView2.Rows[rowIndex].Cells[5].FindControl("TextBox136");
                    TextBox box6 = (TextBox)GridView2.Rows[rowIndex].Cells[6].FindControl("TextBox137");
                    TextBox box7 = (TextBox)GridView2.Rows[rowIndex].Cells[7].FindControl("TextBox138");
                    Button btn = this.GridView2.FooterRow.FindControl("btnFooter") as Button;


                        drCurrentRow = dtCurrentTable.NewRow();

                        drCurrentRow["RowNumber"] = i + 1;


                        dtCurrentTable.Rows[i - 1]["Column1"] = box1.Text;
                        dtCurrentTable.Rows[i - 1]["Column2"] = box2.Text;
                        dtCurrentTable.Rows[i - 1]["Column3"] = box3.Text;
                        dtCurrentTable.Rows[i - 1]["Column4"] = box4.Text;
                        dtCurrentTable.Rows[i - 1]["Column5"] = box5.Text;
                        dtCurrentTable.Rows[i - 1]["Column6"] = box6.Text;
                        dtCurrentTable.Rows[i - 1]["Column7"] = box7.Text;

                        rowIndex++;
                        **if (rowIndex+1 > val)
                        {
                            btn.Visible = false;
                        }**
                    }

                    {
                        dtCurrentTable.Rows.Add(drCurrentRow);


                    }
                    ViewState["CurrentTable"] = dtCurrentTable;

                    GridView2.DataSource = dtCurrentTable;
                    GridView2.DataBind();

                }

            }
            else
            {
                Response.Write("ViewState is null");
            }

            //Set Previous Data on Postbacks

            SetPreviousData();
        }


    private void SetPreviousData()
    {
        int rowIndex = 0;
        int val = Convert.ToInt16(TextBox63.Text);
        if (ViewState["CurrentTable"] != null)
        {
            DataTable dt = (DataTable)ViewState["CurrentTable"];
            if (dt.Rows.Count > 0)
            {
                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    TextBox box1 = (TextBox)GridView2.Rows[rowIndex].Cells[1].FindControl("TextBox132");
                    TextBox box2 = (TextBox)GridView2.Rows[rowIndex].Cells[2].FindControl("TextBox133");
                    TextBox box3 = (TextBox)GridView2.Rows[rowIndex].Cells[3].FindControl("TextBox134");
                    TextBox box4 = (TextBox)GridView2.Rows[rowIndex].Cells[4].FindControl("TextBox135");
                    TextBox box5 = (TextBox)GridView2.Rows[rowIndex].Cells[5].FindControl("TextBox136");
                    TextBox box6 = (TextBox)GridView2.Rows[rowIndex].Cells[6].FindControl("TextBox137");
                    TextBox box7 = (TextBox)GridView2.Rows[rowIndex].Cells[7].FindControl("TextBox138");
                    Button btn = this.GridView2.FooterRow.FindControl("btnFooter") as Button;


                    box1.Text = dt.Rows[i]["Column1"].ToString();
                    box2.Text = dt.Rows[i]["Column2"].ToString();
                    box3.Text = dt.Rows[i]["Column3"].ToString();
                    box4.Text = dt.Rows[i]["Column4"].ToString();
                    box5.Text = dt.Rows[i]["Column5"].ToString();
                    box6.Text = dt.Rows[i]["Column6"].ToString();
                    box7.Text = dt.Rows[i]["Column7"].ToString();

                    rowIndex++;
                    **if (rowIndex+1> val)
                    {
                        btn.Visible = false;
                    }**
                }
            }
        }
    }
    protected void Button1_Click1(object sender, EventArgs e)
    {
        AddNewRowToGrid();
    }
单击该按钮1在gridview中添加新行时,单击此处。但是我在aspx页面上有一些文本框。 当文本框显示一些int值时,文本框值和gridview行相等表示按钮被禁用

请帮助。

我使用此代码

 GridView2.ShowFooter = false;
 GridView2.FooterRow.Visible = false;

使用btn.Style.Adddisplay,none代替visible=false谢谢回复sandeep。你能告诉我如何在页面后面编写代码吗。