我想在DataGrid中动态添加模板列TextBox后如何能够获取TextBox中的内容?下面是我写的一部分代码:
public TemplateColumn colTemp = new TemplateColumn();
public ColumnTemplate mycol = new ColumnTemplate(); private void Button2_Click(object sender, System.EventArgs e)
{
System.Web.UI.WebControls.TextBox txtTemp;
//动态添加模板列
Add_Col();
//获取TextBox中的内容
txtTemp = (TextBox)MyGrid.Items[0].Cells[0].FindControl("txt");
} private void Add_Col()
{
colTemp.HeaderText = "Col1";
colTemp.ItemTemplate = mycol;
MyGrid.Columns.Add(colTemp);
MyGrid.ShowHeader = true;
MyGrid.DataSource = Creat_Table();
MyGrid.DataBind();
} private ICollection Creat_Table()
{
DataTable dt = new DataTable();
DataRow dr; dt.Columns.Add(new DataColumn("Id",typeof(string)));
dt.Columns.Add(new DataColumn("Name",typeof(string)));
for(int i = 0; i < 5; i++)
{
dr = dt.NewRow();
dt.Rows.Add(dr);
}
DataView dv = new DataView(dt);
return dv;
} public class ColumnTemplate : ITemplate
{
public void InstantiateIn(Control container)
{
TextBox myText = new TextBox();
myText.ID = "txt";
container.Controls.Add(myText);
}
}
哪位大虾帮我看一下如何才能获取到TextBox模板列中TextBox的内容,谢谢!
public TemplateColumn colTemp = new TemplateColumn();
public ColumnTemplate mycol = new ColumnTemplate(); private void Button2_Click(object sender, System.EventArgs e)
{
System.Web.UI.WebControls.TextBox txtTemp;
//动态添加模板列
Add_Col();
//获取TextBox中的内容
txtTemp = (TextBox)MyGrid.Items[0].Cells[0].FindControl("txt");
} private void Add_Col()
{
colTemp.HeaderText = "Col1";
colTemp.ItemTemplate = mycol;
MyGrid.Columns.Add(colTemp);
MyGrid.ShowHeader = true;
MyGrid.DataSource = Creat_Table();
MyGrid.DataBind();
} private ICollection Creat_Table()
{
DataTable dt = new DataTable();
DataRow dr; dt.Columns.Add(new DataColumn("Id",typeof(string)));
dt.Columns.Add(new DataColumn("Name",typeof(string)));
for(int i = 0; i < 5; i++)
{
dr = dt.NewRow();
dt.Rows.Add(dr);
}
DataView dv = new DataView(dt);
return dv;
} public class ColumnTemplate : ITemplate
{
public void InstantiateIn(Control container)
{
TextBox myText = new TextBox();
myText.ID = "txt";
container.Controls.Add(myText);
}
}
哪位大虾帮我看一下如何才能获取到TextBox模板列中TextBox的内容,谢谢!
TextBox tb=(TextBox)e.Item.FindControl("模板列textbox的id")如果写在外面的按钮事件里
需要遍历DataGrid的每一项
TextBox tb=(TextBox)this.DataGrid.Items[i].FindControl("模板列textbox的id")
text=((TextBox)this.DataGrid.Items[行].Cell[列]FindControl("模板列textbox的id")).Text.ToString
System.Web.UI.WebControls.TextBox txtTemp;
txtTemp = (TextBox)MyGrid.Items[0].Cells[0].FindControl("txt");
可是因为页面提交了,所以原先动态添加上去的模板列已经找不到txtTemp是null,但是如果象我代码中写的在Button2_Click事件中去抓的话,因为该模板列是重新生成的,所以TextBox中的值已经被清空也无法获取到刚才用户输入的内容,难道只能在客户端抓取吗?
foreach(DataGridItem dgi in MyDataGrid1.Items)
{
TextBox txt1 = (TextBox)dgi.FindControl("Linkbutton1");
if (txt1 != null)
string str=txt1.Text.ToString();
}
foreach(DataGridItem dgi in MyDataGrid1.Items)
{
TextBox txt1 = (TextBox)dgi.FindControl("txt");
if (txt1 != null)
string str=txt1.Text.ToString();
}
{
TextBox tb=(TextBox)MyDataGrid.Items[i].Cell[列号].FindControl("tb");
if(tb!=null)
{
string str=tb.Text;
}
}
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
Dim a As Integer
Dim b As TextBox
For a = 0 To DataGrid1.Items.Count - 1
b = CType(DataGrid1.Items(a).Cells(6).Controls(1), TextBox)
ListBox1.Items.Add(b.Text)
Next
End Sub
http://community.csdn.net/Expert/topic/3589/3589355.xml?temp=.9248011