如何在asp.net中动态地向gridview添加行 [英] How to add rows to gridview dynamically in asp.net
本文介绍了如何在asp.net中动态地向gridview添加行的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一个文本框。接受数字字段。取决于文本框中的值,该行数将附加到网格视图。怎么做?
解决方案
示例网格代码:
< asp:gridview id =Gridview1runat =servershowfooter =trueautogeneratecolumns =falsexmlns:asp =#unknown>
< columns>
< asp:boundfield datafield =RowNumberheadertext =Row Number/>
< asp:templatefield headertext =Header 1>
< itemtemplate>
< asp:textbox id =TextBox1runat =server>< / asp:textbox>
< / itemtemplate>
< / asp:templatefield>
< asp:templatefield headertext =Header 2>
< itemtemplate>
< asp:textbox id =TextBox2runat =server>< / asp:textbox>
< / itemtemplate>
< / asp:templatefield>
< asp:templatefield headertext =Header 3>
< itemtemplate>
< asp:textbox id =TextBox3runat =server>< / asp:textbox>
< / itemtemplate>
< footerstyle horizontalalign =Right/>
< footertemplate>
< asp:button id =ButtonAddrunat =servertext =Add New Row>
onclick =ButtonAdd_Click/>
< / asp:button>< / footertemplate>
< / asp:templatefield>
< / columns>
< / asp:gridview>
代码设置初始行
private void SetInitialRow()
{
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)));
dr = dt.NewRow();
dr [RowNumber] = 1;
dr [Column1] = string.Empty;
dr [Column2] = string.Empty;
dr [Column3] = string.Empty;
dt.Rows.Add(dr);
//将DataTable存储在ViewState中
ViewState [CurrentTable] = dt;
Gridview1.DataSource = dt;
Gridview1.DataBind();
}
添加新行
private void AddNewRowToGrid()
{
int j = 0;
while(j< convert.toint16(txtinputtextvalue.text))>
{
int rowIndex = 0;
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 ++)
{
//提取TextBox值
TextBox box1 =(TextBox)Gridview1.Rows [rowIndex] .Cells [1] .FindControl(TextBox1);
TextBox box2 =(TextBox)Gridview1.Rows [rowIndex] .Cells [2] .FindControl(TextBox2);
TextBox box3 =(TextBox)Gridview1.Rows [rowIndex] .Cells [3] .FindControl(TextBox3);
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;
rowIndex ++;
}
dtCurrentTable.Rows.Add(drCurrentRow);
ViewState [CurrentTable] = dtCurrentTable;
Gridview1.DataSource = dtCurrentTable;
Gridview1.DataBind();
}
}
else
{
Response.Write(ViewState为null);
}
//在回发上设置先前数据
SetPreviousData();
j ++;
}
}
txtInputtextValue.text这是你的新行数量的文本框
设置以前的数据
private void SetPreviousData()
{
int rowIndex = 0;
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)Gridview1.Rows [rowIndex] .Cells [1] .FindControl(TextBox1);
TextBox box2 =(TextBox)Gridview1.Rows [rowIndex] .Cells [2] .FindControl(TextBox2);
TextBox box3 =(TextBox)Gridview1.Rows [rowIndex] .Cells [3] .FindControl(TextBox3);
box1.Text = dt.Rows [i] [Column1]。ToString();
box2.Text = dt.Rows [i] [Column2]。ToString();
box3.Text = dt.Rows [i] [Column3]。ToString();
rowIndex ++;
}
}
}
}
在页面加载事件中调用初始值方法
调用按钮点击添加新行方法
注意:如果您将来自DB的数据绑定为该数据作为初始值
I have a textbox. which accept numeric field. depending on value in textbox that number of rows are appended to grid view. how to do this ?
解决方案Sample Grid Code:
<asp:gridview id="Gridview1" runat="server" showfooter="true" autogeneratecolumns="false" xmlns:asp="#unknown"> <columns> <asp:boundfield datafield="RowNumber" headertext="Row Number" /> <asp:templatefield headertext="Header 1"> <itemtemplate> <asp:textbox id="TextBox1" runat="server"></asp:textbox> </itemtemplate> </asp:templatefield> <asp:templatefield headertext="Header 2"> <itemtemplate> <asp:textbox id="TextBox2" runat="server"></asp:textbox> </itemtemplate> </asp:templatefield> <asp:templatefield headertext="Header 3"> <itemtemplate> <asp:textbox id="TextBox3" runat="server"></asp:textbox> </itemtemplate> <footerstyle horizontalalign="Right" /> <footertemplate> <asp:button id="ButtonAdd" runat="server" text="Add New Row"> onclick="ButtonAdd_Click" /> </asp:button></footertemplate> </asp:templatefield> </columns> </asp:gridview>
Code to Set initial row
private void SetInitialRow() { 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))); dr = dt.NewRow(); dr["RowNumber"] = 1; dr["Column1"] = string.Empty; dr["Column2"] = string.Empty; dr["Column3"] = string.Empty; dt.Rows.Add(dr); //Store the DataTable in ViewState ViewState["CurrentTable"] = dt; Gridview1.DataSource = dt; Gridview1.DataBind(); }
To Add New Row
private void AddNewRowToGrid() { int j=0; while(j<convert.toint16(txtinputtextvalue.text))> { int rowIndex = 0; 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)Gridview1.Rows[rowIndex].Cells[1].FindControl("TextBox1"); TextBox box2 = (TextBox)Gridview1.Rows[rowIndex].Cells[2].FindControl("TextBox2"); TextBox box3 = (TextBox)Gridview1.Rows[rowIndex].Cells[3].FindControl("TextBox3"); 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; rowIndex++; } dtCurrentTable.Rows.Add(drCurrentRow); ViewState["CurrentTable"] = dtCurrentTable; Gridview1.DataSource = dtCurrentTable; Gridview1.DataBind(); } } else { Response.Write("ViewState is null"); } //Set Previous Data on Postbacks SetPreviousData(); j++; } }
txtInputtextValue.text which is your text box for count of new rows
To set previous Data
private void SetPreviousData() { int rowIndex = 0; 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)Gridview1.Rows[rowIndex].Cells[1].FindControl("TextBox1"); TextBox box2 = (TextBox)Gridview1.Rows[rowIndex].Cells[2].FindControl("TextBox2"); TextBox box3 = (TextBox)Gridview1.Rows[rowIndex].Cells[3].FindControl("TextBox3"); box1.Text = dt.Rows[i]["Column1"].ToString(); box2.Text = dt.Rows[i]["Column2"].ToString(); box3.Text = dt.Rows[i]["Column3"].ToString(); rowIndex++; } } } }
Call the initial value method in page load event
call add new row method at button click
Note: if you bind data from DB Call that data as initial value
这篇关于如何在asp.net中动态地向gridview添加行的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文