如何在asp.net中动态地向gridview添加行 [英] How to add rows to gridview dynamically in asp.net

查看:68
本文介绍了如何在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 horizo​​ntalalign =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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆