Asp.net Gridview页脚按钮取消缩放显示错误,因为对象引用未设置为对象的实例
我对asp.net都是新手。我的问题是,我的gridview在ItemTemplates中有文本框,在footer中有单个按钮。当我在gridview中单击该按钮时,将手动添加行,并使用ny编码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: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。你能告诉我如何在页面后面编写代码吗。