我在网格视图中添加了一个文本框。
当用户点击添加按钮时,会创建一个新文本框。
我从文本框中获取所有数据,但是当我添加数据时,文本框没有显示任何内容
private void SetPreviousTids(DataTable dt)
{
if (ViewState["TidTable"] != null)
{
if (dt.Rows.Count > 0)
{
for (int i = 0; i < dt.Rows.Count; i++)
{
TextBox Tid = (TextBox)GridView1.Rows[i].Cells[0].FindControl("Tid");
Response.Write(Tid.Text.ToString());
Tid.Text = "hello";// text not showing on text box
}
}
}
}
这里的ASPX代码
<asp:GridView ID="GridView1" runat="server" Visible="true">
<Columns>
<asp:TemplateField HeaderText="TID">
<ItemTemplate>
<asp:TextBox ID="Tid" runat="server"></asp:TextBox>
</ItemTemplate>
<FooterTemplate>
<asp:Button ID="ButtonAdd" runat="server" Text="+" OnClick="Add_Tid" />
</FooterTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
答案 0 :(得分:0)
你会想要这样的东西:
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
TextBox myTextBox = (TextBox)(e.Row.Cells[1].FindControl("Tid"));
myTextBox.Text == "hello";
}
}
答案 1 :(得分:0)
使用<asp:TemplateField>
等模板为GridView定义列时,无法使用Cells
属性访问此类列。
但是,当使用绑定字段<asp:BoundField .. />
为GridView定义列时,您可以使用Cells
属性来访问列。
所以,改变
TextBox Tid = (TextBox)GridView1.Rows[i].Cells[0].FindControl("Tid");
到
TextBox Tid = (TextBox)GridView1.Rows[i].FindControl("Tid");
答案 2 :(得分:0)
我相信这应该有用!
<asp:GridView ID="grdList" runat="server" Visible="true" onrowcommand="grdList_RowCommandEvent">
<Columns>
<asp:TemplateField HeaderText="TID">
<ItemTemplate>
<asp:TextBox ID="Tid" runat="server" Text='<%# Eval("TextboxInfor") >%'></asp:TextBox>
</ItemTemplate>
<FooterTemplate>
<asp:Button ID="ButtonAdd" runat="server" Text="+" CommandName="AddNew" />
</FooterTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
背后的代码应该如下:
namespace Demo
{
public partial class Default : System.Web.UI.Page
{
DataTable _tableData;
protected void Page_Load(object sender, EventArgs e)
{
if(!Page.IsPostBack)
{
_tableData=new DataTable();
_tableData.Columns.Add("TextboxInfor");
ViewState["TidTable"]=_tableData;
}
}
protected void grdList_RowCommandEvent(object sender, GridViewCommandEventArgs e)
{
if(e.CommandName.Equlas("AddNew"))
{
_tableData= ViewState["TidTable"] as DataTable;
for (int i = 0; i < grdList.Rows.Count; i++)
{
var Tid= gvMandiStatistics.Rows[0].Cells[0].FindControl("Tid") as TextBox;
_tableData.Rows[i]["TextboxInfor"]=Tid.Text;
}
var dr= _tableData.NewRow();
dr["TextboxInfor"]=string.Empty;
_tableData.Rows.Add(dr);
}
}
private void BindGrid()
{
_tableData= ViewState["TidTable"] as DataTable;
grdList.DataSource=_tableData;
grdList.DataBind();
}
}
}
原谅如果有一些拼写错误,因为整个代码是用 NOTEPAD:D
写的