如何在Gridview中生成动态文本框和dopdownlist时删除行 [英] How to delete row when generating dynamically textboxes and dopdownlist in Gridview
本文介绍了如何在Gridview中生成动态文本框和dopdownlist时删除行的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
您好,
我通过维护视图状态并将其绑定在gridview中来生成动态文本框和下拉列表。
当我使用LinkButton Delete删除gridview中的任何行时,删除该行,它删除了它下面的行。这是代码:
protected void LinkButton1_Click( object sender,EventArgs e)
{
LinkButton lb =(LinkButton)sender;
GridViewRow gvRow =(GridViewRow)lb.NamingContainer;
int rowID = gvRow.RowIndex + 1 ;
if (ViewState [ CurrentTable]!= null )
{
DataTable dt =(DataTable)ViewState [ CurrentTable];
if (dt.Rows.Count > 1 )
{
if (gvRow.RowIndex < dt.Rows.Count - 1 )
{
// 删除选定的行数据
dt.Rows.Remove(dt.Rows [rowID]);
}
}
// 将当前数据存储在ViewState中以供将来参考
ViewState [ CurrentTable] = dt;
// 重新绑定GridView以获取更新的数据
Gridview1.DataSource = DT;
Gridview1.DataBind();
}
SetPreviousData();
}
私有 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 ++)
{
DropDownList box1 =(DropDownList)Gridview1.Rows [rowIndex] .Cells [ 1 ]。FindControl( DROPDOWNLIST1);
box1.DataSource = getitemoutput.DtCategory;
box1.DataTextField = item_name;
box1.DataValueField = store_item_id;
box1.DataBind();
box1.Items.Insert( 0 , 选择商店);
TextBox box2 =(TextBox)Gridview1.Rows [rowIndex] .Cells [ 2 ]。FindControl( TextBox2);
TextBox box3 =(TextBox)Gridview1.Rows [rowIndex] .Cells [ 3 ]。FindControl( TextBox3);
TextBox box4 =(TextBox)Gridview1.Rows [rowIndex] .Cells [ 4 ]。FindControl( TextBox4);
TextBox box5 =(TextBox)Gridview1.Rows [rowIndex] .Cells [ 4 ]。FindControl( TextBox5);
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( );
rowIndex ++;
}
}
}
}
解决方案
< blockquote>从您尝试实施此代码的位置查看此文章:从ASP.NET GridView动态添加和删除行 [ ^ ]
验证它为什么不适合你。
Hello,
I am generating dynamic textboxes and dropdownlist by maintaining the viewstate and bind it in gridview.
When I delete any row from gridview using LinkButton Delete, instead of deleting that row, it deleted the row below it.Here is the code:
protected void LinkButton1_Click(object sender, EventArgs e)
{
LinkButton lb = (LinkButton)sender;
GridViewRow gvRow = (GridViewRow)lb.NamingContainer;
int rowID = gvRow.RowIndex + 1;
if (ViewState["CurrentTable"] != null)
{
DataTable dt = (DataTable)ViewState["CurrentTable"];
if (dt.Rows.Count > 1)
{
if (gvRow.RowIndex < dt.Rows.Count - 1)
{
//Remove the Selected Row data
dt.Rows.Remove(dt.Rows[rowID]);
}
}
//Store the current data in ViewState for future reference
ViewState["CurrentTable"] = dt;
//Re bind the GridView for the updated data
Gridview1.DataSource = dt;
Gridview1.DataBind();
}
SetPreviousData();
}
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++)
{
DropDownList box1 = (DropDownList)Gridview1.Rows[rowIndex].Cells[1].FindControl("DROPDOWNLIST1");
box1.DataSource = getitemoutput.DtCategory;
box1.DataTextField = "item_name";
box1.DataValueField = "store_item_id";
box1.DataBind();
box1.Items.Insert(0, "Select store");
TextBox box2 = (TextBox)Gridview1.Rows[rowIndex].Cells[2].FindControl("TextBox2");
TextBox box3 = (TextBox)Gridview1.Rows[rowIndex].Cells[3].FindControl("TextBox3");
TextBox box4 = (TextBox)Gridview1.Rows[rowIndex].Cells[4].FindControl("TextBox4");
TextBox box5 = (TextBox)Gridview1.Rows[rowIndex].Cells[4].FindControl("TextBox5");
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();
rowIndex++;
}
}
}
}
解决方案
Check this Article from where you tried to implement this code : Dynamically adding and deleting rows from ASP.NET GridView[^]
Verify why it doesn't work for you.
这篇关于如何在Gridview中生成动态文本框和dopdownlist时删除行的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文